2012-02-29 55 views
1

我是Rails中的新手,但我無法弄清楚這一點。Rails沒有將我的url正確映射到url_for

Rails maps url_for(:controller => 'login', :action => 'check') 

"/assets?action=check&controller=login" 

應該被映射到/ EN /登錄/支票(來自哪裏/ EN /登錄/指數)

我的routes.rb:

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

    end 

    match ':locale/:controller/:action/:id' 
    match ':controller/:action/:id' 
    match ':locale/:controller/:action/:id.:format' 
    match ':controller/:action/:id.:format' 

    root :to => 'main#index' 
end 

我會讀更多關於路由,但我真的很困惑從哪裏來的資產以及爲什麼它沒有正確映射。

回答

3

您需要在url_for helper中指定:locale,否則路由器實際上不會找到匹配項。

url_for(locale: 'en', controller: 'login', action: 'index') 
+0

它不能推遲從當前的網址(是EN /登錄/檢查)? +如果找不到匹配項,可以配置rails以引發錯誤嗎? – 2012-02-29 16:00:27

+0

當前的網址?你的意思是說不清楚這些單詞是用英語還是德語?我不明白你的意思。 – TheDelChop 2012-02-29 16:02:20

+0

嗯,我知道這似乎是一個dumn問題,但我無法想象需要在所有url_for語句中指定使用哪種語言。 – 2012-02-29 16:08:26