路由错误 没有路由匹配 [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
我正在尝试为我的 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