1

在 Rails 3.2 应用程序中,我使用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在地址栏中,但设计路径将语言环境作为参数传递/administration/admins/registrations/login?locale=en

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

4

1 回答 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

于 2013-06-26T19:55:23.967 回答