2013-02-14 40 views
1

说,我有这些路线:下轨动态范围安装的发动机

scope '(:locale)', :locale => /en|de/ do 
    mount Users::Engine => "users", as: 'users_engine' 
end 

,并在引擎的观点:

<%= link_to 'new user', action: :new, controller: :users, locale: :de %> 

我得到

/en/users/users/new?locale=de 

,而不是

/de/users/users/new 

我已经包含在应用控制器:

def set_locale 
    if params.include?('locale') 
    I18n.locale = params[:locale] 
    Rails.application.routes.default_url_options[:locale] = I18n.locale 
    end 
end 

,并在主应用程序

我已经找到一种方法通过

Users::Engine.routes.url_for controller: 'users/users', action: :new, only_path: true, locale: :de 

,但我认为,以获得正确的URL工作正常应该有更好的方法,如果我在布局中创建更改区域设置链接?

<%= link_to locale: :de %> 

我不知道它的确切的引擎,这可能是

由于虚拟机。

+1

你找到一个解决方案?我也有同样的问题。 – raskhadafi 2013-07-17 08:53:56

+0

解决方案在这里http://stackoverflow.com/questions/18003626/i18n-routing-to-mounted-engine-ignoring-locale/18150942 – 2013-08-19 19:52:44

回答