0

对 Ruby 和 Rails 来说很新,所以这可能是一个愚蠢的问题;)

我尝试让“i18n”路由与“admin”命名空间一起使用。

所以,我的路线文件看起来像

scope '/:locale' do
  root 'admin#index', as: :root
  namespace :admin do
    resources :foos
  end
end

在我的 ApplicationController 中,我有

before_action :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
  { locale: I18n.locale }
end

如果我“耙路线”,我得到以下

root GET    /                     admin#index
     GET    /:locale(.:format)    admin#index
admin_foos GET    /:locale/admin/foos(.:format)  admin/foos#index

我可以到达 /en/admin/foos

我面临的问题是,如果我在视图中打印路径,(甚至是我表单中的路径,...)我将获得路径 /admin/foo?locale=en。这个网址以 404 结尾。

对路径的调用很简单,例如

<%= link_to 'Back', admin_foos_path %>

我想我错过了一些东西,但不知道是什么。任何帮助将不胜感激 !

问候, 本杰明

4

1 回答 1

0

我相信你想要:

admin_foos_path :locale => 'en'
admin_foo_path :id => @foo.id, :locale => 'en'

ETC...

如果您像这样生成您的 URL,应该可以解决问题。

于 2013-07-03T17:50:09.897 回答