路由错误 没有路由匹配 [POST] “/user/register”

Routing Error No route matches [POST] "/user/register"

我正在尝试为我的 rails 网站注册用户。当我点击注册按钮时,我得到这个:

 Routing Error
 No route matches [POST] "/user/register"

这是我的 user_controller.rb 文件:

class UserController < ApplicationController


  def index
    @title = "RailsSpace User Hub"
  end

  def register
    @title = "Register"
    if request.post? and params[:user]
      @user = User.new(params[:user])
      if @user.save
        flash[:notice] = "User #{@user.screen_name} created!"
        redirect_to :action => "index"
      end
    end
  end
end

这是我的 config/routes.rb 文件:

Rails.application.routes.draw do
  get 'user/index'
  get 'user/register'
  get  'site/index'
  get '/site/about'
  get 'site/help'
  get 'users/about', to: 'user#about'
  get 'users/help', to: 'user#help'

  root  'site#index'
end

这是我的 user/register.html.erb 文件:

<h2>Register</h2>
<%= form_for :user do |form| %>
  <fieldset>
    <legend>Enter Your Details</legend>
    <div class="form_row">
      <label for="screen_name">Screen name:</label>
      <%= form.text_field :screen_name,
      :size => User::SCREEN_NAME_SIZE,
      :maxlength => User::SCREEN_NAME_MAX_LENGTH %>
    </div>
    <div class="form_row">
      <label for="email">Email:</label>
      <%= form.text_field :email,
      :size => User::EMAIL_SIZE,
      :maxlength => User::EMAIL_MAX_LENGTH %>
    </div>
    <div class="form_row">
      <label for="password">Password:</label>
      <%= form.password_field :password,
      :size => User::PASSWORD_SIZE,
      :maxlength => User::PASSWORD_MAX_LENGTH %>
    </div>
    <div class="form_row">
      <%= submit_tag "Register!", :class => "submit" %>
    </div>
  </fieldset>
<% end %>

非常感谢您的提前帮助!

你有get 'user/register',它只匹配一个GET请求,如果你想只匹配POST做post 'user/register',如果你想同时匹配GET和POST做match 'user/register', via: [:get, :post]

尝试将 get 更改为 post:

## config/routes.rb

Rails.application.routes.draw do
  get 'user/index'
  post 'user/register'
  get  'site/index'
  get '/site/about'
  get 'site/help'
  get 'users/about', to: 'user#about'
  get 'users/help', to: 'user#help'

  root  'site#index'
end