2012-03-05 32 views
0

我具有以下路線定義:現在使用生成的路徑與在導軌資源

CyberTrackRails3::Application.routes.draw do 
    scope "(:locale)", :locale => /en|de|nl/ do 
    resources :login do 
     get 'index', on: :collection 
     get 'check', on: :collection 
    end 
    end 
end 

,url_for(:控制器=> '登錄',:動作=> '檢查'),讓我正確的URL, EN /登錄/檢查。

但是,使用login_check_path不起作用。我如何完成這項工作?

我試着更換得到「指數」,上:與比賽收集「檢查」 =>「檢查」,但不起作用。 也不匹配'check'=>'登錄#檢查'

+1

你看了rake routes命令的輸出嗎? – Fivell 2012-03-19 10:18:07

回答

2

,因爲你要添加一個動作的資源,我認爲自動生成的名稱將被逆轉,即「check_logins_path」(見adding-more-restful-actions

你需要login_check_path特別?如果是這樣,你應該能夠定義路徑的資源之外:登錄塊,即

match '/login/check' => 'login#check', :via => :get, :as => 'login_check' 

和像Fivell建議,rake routes會告訴你的路線自動生成的名稱。

+0

也可以在同一行中添加:post: – 2012-04-12 10:20:59

+0

在接受GET或POST請求? ':via => [:get,:post]'應該這樣做 - [http-verb-constraints](http://guides.rubyonrails.org/routing.html#http-verb-constraints)。在上面的匹配模式中,你只需要切換通過參數,如果你想在你的原始代碼中執行它,我認爲你應該將資源中的行切換到:'match'check',: on =>:collection,:via => [:get,:post]' – mikeb 2012-04-12 14:07:02

+1

也fwiw,在你的問題中代碼的自動生成的命名路由看起來是'check_login_index_path'。 '_index'部分與使用單一資源(登錄vs登錄)有關。更多信息在這裏 - [rails-3-route-appends-index-to-route-name](http://stackoverflow.com/questions/6476763/rails-3-route-appends-index-to-route-名稱) – mikeb 2012-04-13 00:32:16