В приложение Rails 3.2 използвам Devise с a path_prefix
и локализация с обхванати маршрути.
#routes.rb
MyApp::Application.routes.draw do
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
devise_for :admins,
path_prefix: "administration",
end
...other resources
end
end
Докато URL адресът за всичките ми други ресурси е написан правилно, напр /en/resource/1
в адресната лента, Devise пътища преминават локала като параметър /administration/admins/registrations/login?locale=en
Как да насърча Devise да използва формата /locale/path_prefix/route
?
Отговори:
1 за отговор № 1Първият ред трябва да бъде заменен с втория.
devise_for :admins, :path_prefix => "administration"
devise_for :admins, :path => "administration/admins"
Така че в твоя пример ще бъде:
#routes.rb
MyApp::Application.routes.draw do
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
devise_for :admins, :path => "administration/admins"
...other resources
end
end
За повече информация относно devise_for, вижте тази връзка: http://rubydoc.info/github/plataformatec/devise/master/ActionDispatch/Routing/Mapper#devise_for-instance_method