我在[问题]中部分解决了相同的情况:Problems with routes.rb
现在我在“/ users / index”中有两个表单,例如登录表单和注册表单。 我在users_controller,post_login和post_registration中创建了两个不同的操作,并简单地重定向到另一个页面,但是如果我点击按钮就会给出同样的错误:没有路由匹配[POST]“/ users”
这是我的routes.rb代码
Mysite::Application.routes.draw do
controller :home do
get 'login' => :index
post 'login' => :create
end
resources :users, :only => [:index] do
get 'login' => :index
post 'login' => :post_login
get 'registration' => :index
post 'registration' => :post_registration
collection do
post 'post_login'
post 'post_registration'
end
end
# get "/users" => 'users#index'
# post "/users" => 'users#post_login'
get "home/index"
get "home/create"
get "home/show"
get "private/index"
get "users/index"
get "users/post_login"
get "users/post_registration"
end
在这里我的form_registration ......
<%= form_tag do %>
<table>
<tr>
<td>
<%= text_field_tag :name, params[:name] %>
</td>
</tr>
<tr>
<td>
<%= password_field_tag :password, params[:password] %>
</td>
</tr>
<tr>
<td>
<%= submit_tag "Registration" %>
</td>
</tr>
<% end %>
</table>
...和form_login
<%= form_tag do %>
<table>
<tr>
<td>
<%= text_field_tag :name, params[:name] %>
</td>
</tr>
<tr>
<td>
<%= password_field_tag :password, params[:password] %>
</td>
</tr>
<tr>
<td>
<%= submit_tag "Login" %>
</td>
</tr>
<% end %>
<tr>
<td>
<%= link_to 'Registrazione', '/users/index' %>
</td>
</tr>
</table>
问题出在哪里?
答案 0 :(得分:1)
尝试修改表单标记,如下所示:
<%= form_tag('/users/post_registration', :method => :post) %>
进行注册,并且:
<%= form_tag('/users/post_login', :method => :post) %>
登录。 ':method =&gt; :post'选项并不是绝对必要的,但明确没有意义。