如何在同一页面中为两个表单设置routes.rb?

时间:2012-05-31 21:10:32

标签: ruby-on-rails ruby-on-rails-3

我在[问题]中部分解决了相同的情况: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>

问题出在哪里?

1 个答案:

答案 0 :(得分:1)

尝试修改表单标记,如下所示:

<%= form_tag('/users/post_registration', :method => :post) %>

进行注册,并且:

<%= form_tag('/users/post_login', :method => :post) %>

登录。 ':method =&gt; :post'选项并不是绝对必要的,但明确没有意义。