我一直在使用 rails3 ,这里view.html.erb表单有一个登录按钮,所以当我点击该按钮时,不会给出匹配的路由:controller => 'home',:action => '登录'。但我把它放在routes.rb中。为什么会这样?
view.html.erb
<%= form_tag( { :controller => 'home', :action => 'login' }, { :method
=> 'post'}) do %>
<%= text_field(:name, :name, :class => "span2",:placeholder =>
"Username") %>
<%= password_field_tag(:password, :password, :class =>"span2") %>
<%= submit_tag "Login", :class => "btn btn-primary" %>
<% end %>
**routes.rb**
resources :home
resources :home do
post :login, :on => :member
end
**homecontroller.rb**
class HomeController < ApplicationController
def login
end
end
答案 0 :(得分:0)
您已经定义了“resources:home”两次,第一次声明无效并覆盖第二次。
答案 1 :(得分:0)
由于您使用资源来定义路由(建议使用),因此应使用生成的辅助方法,在本例中为login_home_path
而不是旧语法{ :controller => 'home', :action => 'login' }
答案 2 :(得分:0)
首先,
在routes.rb中尝试这种方式
resources :home
match '/login', to: 'home#login'
并在提交标记中使用login_path。
我会优先登录,退出,创建会话控制器
rails generate controller Sessions --no-test-framework
并且对于登录创建new
方法和登出(注销)创建destroy
方法