Rails3: префикс для всех URL для URL - PullRequest
3 голосов
/ 22 марта 2011

Я добавляю i18n на свою веб-страницу (разный контент для разных языков). Мои URL выглядят так:

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

Все мои URL в приложении задаются методом 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 голосов
/ 02 июля 2012

Если вы не хотите изменять все URL для вызовов, вы можете добавить метод в файл 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...