使用带有Ruby on Rails 3的作用域时,URL中的默认参数

时间:2012-11-15 11:07:55

标签: ruby-on-rails-3

我知道这已经被问到了,但我仍然无法让它发挥作用。 我正在尝试使用:locale来显示default_url_options参数,如下所示:

# SomethingController < ApplicationController
def default_url_options(options={})
  { :locale => I18n.locale }
end

I18n.locale设置为before_filter并具有正确的值(使用pry调试)。 路线:

# In routes
scope "(:locale)", :defaults => { :locale => I18n.default_locale } do
  get "something" => "something#index", :as => :something_index
end

在我看来,我试过了:

url_for :something_index

something_index_url

但他们都返回“/ something”而不是“/ en / something”。为了自动获取要显示的参数,我还需要做些什么吗?

我读到了这个here

  

每个帮助方法都依赖于url_for(例如,命名的帮助程序   root_path或root_url等路由,books_path或者资源路由   books_url等)现在将自动包含在中的语言环境   查询字符串

1 个答案:

答案 0 :(得分:0)

你可以修改get matcher:

scope :locale, :defaults => { :locale => I18n.default_locale } do
  get "/:locale/something" => "something#index", :as => :something_index
end

有关更好的方法,请参阅:

Rails optional /:locale route