2012-05-30 68 views
0

我有routes.rb中用的routes.rb問題

一個問題在我的web應用程序,我有兩個頁面登錄表單

「/首頁/指數」和「/用戶/指數」

這是我的路線文件

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 

的問題是,如果我使用的登錄與我的「家/指數」它執行正確的行動「創造」的家庭控制器的,而如果我在「用戶登錄/ index「頁面它再次執行「創建」而不是「post_login」,爲什麼?

我用我在「的/ home /指數」和「/用戶/指數」形式的代碼是一樣的...

這是一個簡單的形式

<%= 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 
+0

您能否發佈來自罪魁禍首形式的代碼,我懷疑行動指向'home/index'路徑爲 – stephenmurdoch

+0

我插入它... –

回答

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" 

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

+0

這樣它給這個錯誤:未知的動作 行動「秀」不能爲UsersController找到,但我不使用這個動作 –

+0

只需使用:只有那麼資源=> [] 。看看我的反應,我已經更新它 –

+0

現在當我登錄按鈕點擊從我的「/用戶/指數」頁它給了我這個錯誤:沒有路由匹配[POST]「/用戶」 –