如何在Devise中使用scoped locale + path_prefix?

时间:2013-02-12 10:35:00

标签: ruby-on-rails devise

在Rails 3.2应用程序中,我使用带有path_prefix的Devise和带有范围路径的本地化。

#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

虽然我的所有其他资源的网址都是正确编写的,例如地址栏中的/en/resource/1,但设计路径会将区域设置作为参数传递/administration/admins/registrations/login?locale=en

如何鼓励Devise使用格式/locale/path_prefix/route

1 个答案:

答案 0 :(得分: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