0

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

问题出在哪里?

4

1 回答 1

1

Try modifying your form tags to be like below:

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

for registration, and:

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

for login. The ':method => :post' option isn't strictly necessary but it doesn't hurt to be explicit.

于 2012-05-31T21:26:55.523 回答