【问题标题】:Rails4 route with scope and namespace具有范围和命名空间的 Rails4 路由
【发布时间】:2013-06-30 00:46:51
【问题描述】:

对 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

如果我“rake routes”,我会得到以下结果

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 %>

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

问候, 本杰明

【问题讨论】:

  • 奇数。也许发布一些生成这些非 URL 的视图代码?

标签: ruby-on-rails ruby-on-rails-4 nested-routes rails-i18n


【解决方案1】:

我相信你想要:

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

等等……

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

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2012-07-05
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多