2013-02-14 3 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 

и она отлично работает в главном приложении

я нашел способ, чтобы получить правильный URL от

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

, но я думаю, что должен быть лучший способ, и что, если я создаю ссылку на локальную ссылку в макете?

<%= link_to locale: :de %> 

Я не могу знать, какой именно двигатель это может быть

Благодаря Vm.

+1

Вы нашли решение? У меня такая же проблема. – raskhadafi

+0

Решение здесь http://stackoverflow.com/questions/18003626/i18n-routing-to-mounted-engine-ignoring-locale/18150942 –

ответ

0

Я думаю, я нашел решение этой проблемы ...

Просто используйте url_options-метод в вашем application_controller.rb-файл (ссылка ниже)

См: https://stackoverflow.com/a/18299975/603126

Надежда помогает!

С уважением

Philipp

Смежные вопросы