Rails3:所有url_for URLS的前缀

时间:2011-03-22 15:40:42

标签: ruby-on-rails-3 scope url-routing

我将i18n添加到我的网页(不同语言的不同内容)。我的网址看起来很喜欢这个:

http://host.tld/de/news/15
http://host.tld/en/news/15
...

应用程序中的所有网址都是由link_to / url_for方法设置的

url_for("/news/#{news.id}/#{urlify(news.title)}")
url_for("/news/#{@news.section}")
...

我的路由如下:

scope "/:language/", :language => /de|en/ do
  match "news/:news_id(/:title)" => "news#show_entry", :constraints => { :news_id => /[0-9]+/ }
  ...
end

我将它添加到我的ApplicationController:

def default_url_options(options={})
  {:language => I18n.locale}
end

现在我想将语言前缀添加到所有URL而不更改所有url_for() - 调用。是否有解决方案(参数/ config-option或其他)来添加此前缀?它也应该与相对路径一起使用。

1 个答案:

答案 0 :(得分:0)

如果您不想更改调用的所有网址,可以在application_helper.rb文件中添加一个方法,以覆盖现有方法添加语言

def url_for(options={})
  if options[:language]
    '/options[:language]' + super
  else
    super
  end
end

def link_tolink_to(*args, &block)
  options = args[1] || {}
  if options[:language]
    '/options[:language]' + super
  else
    super
  end
end