0

我对 routes.rb 有疑问

在我的网络应用程序中,我有两个带有登录表单的页面

“/home/index”和“/users/index”

这是我的路线文件

  controller :home do
    get     'login'   => :index
    post    'login'   => :create
  end

  controller :users do
    get     'login'   => :index
    post    'login'   => :post_login
  end

  get "home/index"

  get "home/create"

  get "home/show"

  get "private/index"

  get "users/index"

  get "users/get_login"

  get "users/post_login"

  resources :users do
    collection do
      get  'get_login'
      post 'post_login'
    end
  end

问题是,如果我在“home/index”中使用登录,它会执行主控制器的正确操作“create”,而如果我在“users/index”页面登录,它会再次执行“create”而不是“post_login” “, 为什么?

我在“/home/index”和“/users/index”中用于我的表单的代码是相同的......

这是简单的形式

<%= 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_url %>             
            </td>
        </tr>

    </table>

用户控制器代码:

class UsersController < ApplicationController


      def index

      end  

      def post_login
        redirect_to "http://www.google.it"
      end

    end
4

1 回答 1

0

我将拥有用户,仅作为资源:

 controller :home do
    get     'login'   => :index
    post    'login'   => :create
  end

  get "/users" => 'users#index'
  post "/users" => 'users#post_login'


  get "home/index"

  get "home/create"

  get "home/show"

  get "private/index"

在唯一的数组中,只需添加您正在使用的操作...

于 2012-05-30T21:23:24.440 回答