Удаление параметра локали из URL-адреса в рельсах

Мне приходится использовать помощники URL-адресов рельсов, а не помощники пути (в некоторых случаях), поскольку я работаю с приложением, которое использует поддомены, поэтому мне нужно передать параметр домена в качестве параметра.

Однако это приводит к тому, что ссылки отображаются как:

http://sub.domain.dev/the-page?locale=en

Я пытался использовать варианты следующего в контроллере приложений, но безрезультатно:

def default_url_options(options={})
  { :locale => :en }
end

Как удалить этот параметр локали?

Я использую RefineryCMS.


person Chris Edwards    schedule 13.02.2013    source источник


Ответы (3)


Странно, но для любого в моей ситуации:

При использовании RefineryCMS с движком, даже если локаль не используется, а другие движки выдают ожидаемые URL-адреса, исправление должно было установить:

# config/initializers/refinery/i18n.rb
Refinery::I18n.configure do |config|
  config.enabled = false
end
person Chris Edwards    schedule 13.02.2013

Для НПЗ-i18n ~> 4.0:

# config/initializers/refinery/i18n.rb

Refinery::I18n.configure do |config|
  config.url_filter_enabled = false
end
person Leo    schedule 22.01.2018

Если вы используете локаль, я рекомендую следующее:

В ваших маршрутах.rb:

scope "(:locale)", locale: /en|br/ do
  resources :the-pages
end

В вашем контроллере приложений:

before_filter :set_locale
def set_locale
  I18n.locale = params[:locale]
end

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

Таким образом, ваши URL-адреса станут:

http://sub.domain.dev/en/the-page
http://sub.domain.dev/pt/the-page

EDIT — если вам не нужна какая-либо локаль, вам необходимо удалить ее из контроллера приложений:

#remove the below
def default_url_options(options={})
 { :locale => :en }
end

Кроме того, убедитесь, что у вас нет локали в файле route.rb.

person gabrielhilal    schedule 13.02.2013
comment
Спасибо, в настоящее время мне не нужно / не хочу использовать локаль каким-либо образом - на данный момент она только на английском языке, и я хотел бы полностью удалить этот параметр и иметь хорошие чистые URL-адреса... - person Chris Edwards; 13.02.2013
comment
чем вам просто нужно удалить его из вашего контроллера приложений. Я отредактировал ответ. - person gabrielhilal; 13.02.2013
comment
Я только добавил это, чтобы попытаться удалить/изменить его каким-то образом. Похоже, это происходит и с хелперами пути - это когда я использую main_app.some_route_for(object) для представлений в движке. - person Chris Edwards; 13.02.2013
comment
ну, локаль берется откуда-то... проверьте ваш route.rb, контроллер приложения, помощник приложения... но я полагаю, что он установлен в вашем route.rb. Вы также можете найти слово locale в своем коде, чтобы узнать, где оно установлено. - person gabrielhilal; 13.02.2013