/ / Как да използвам Scope locale + path_prefix с Devise? - рубин на релси, измисли

Как да използваме обхвата на locale + path_prefix с Devise? - рубинки на релсите, измислете

В приложение 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