2012-02-29 58 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