rails3 routes.rb

时间:2012-02-29 13:31:12

标签: ruby-on-rails

我一直在使用 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

3 个答案:

答案 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方法