Задать вопрос
@vanderv
Ruby on Rails

Как в rails установить default переменную для url

Есть необходимость передавать в каждый url текущий язык. Нашел в доках метод default_url_options, но он не работает. Версия рельсов 4.1.
Пробовал так в контроллере:
helper_method :url_for
  def default_url_options
    { locale: "en" }
  end

и так в before_action:
Rails.application.routes.default_url_options[:locale]= 'en'

И даже так в конфигах:
config.action_controller.default_url_options = {:locale => "en"}

Итог один - параметра locale в урле не появляется. Что не так?
  • Вопрос задан
  • 2563 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@yurnei
Может это поможет rusrails.ru/rails-internationalization-i18n-api
Ответ написан
Комментировать
Vakiliy
@Vakiliy
В маршутах где-нибудь прописан?
Примерно вот так
get '/posts(/:locale)'
# или
scope "/:locale" do
...
Ответ написан
@vanderv Автор вопроса
Ruby on Rails
Собственно нашел проблему сам. Дело в том что все мои роуты были обернуты скоупом вида:
scope "(:locale)", :defaults => {:locale => "ru"}, :locale => /(ru|en)/ do

В данном случае locale перезаписывал тот что объявлял в default_url_options
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы