2012-04-25 5 views
3

Я вижу сценарий, когда мой параметр локали дублируется, как только я вхожу в монтируемое приложение. Мое приложение выглядит так:Rails 3.2 Монтируемый локальный локальный локальный локатор

#routes.rb 

resources :blogs 

scope "(:locale)" do 
    mount Auth::Engine => '/auth' 
end 

Если я на странице блог и посмотреть на ссылку Идента это выглядит как этот /en-us/auth/signout, который работает хорошо, но как только я загружаю в любой страницу, вынесенной в монтируемом приложении, например, на странице профиля /en-us/auth/myprofile', ссылка знак прямо сейчас выглядит /en-us/auth/signout?locale=en-us

Я не хочу получать строку запроса суматоху, что вызывает приложение, чтобы правильно установить параметр локали, а затем скопировать его в строку запроса?

ответ

1

моей ставка является то, что ваш контроллер приложения имеет что-то вроде:

def set_locale 
    # code here 
end 

def default_url_options 
    # code here 
end 

Поскольку контроллер двигателя наследует от контроллера приложения, set_locale может быть вызван дважды.

Потенциальное решение: проверьте, находится ли код в двигателе, а затем не запускайте настройку локали.

Это может быть сделано с: self.controller_path().split("/").first == engine_name

1

У меня была такая же проблема. Я устанавливал параметры url по умолчанию на контроллере (путем переопределения default_url_options или с помощью self.default_url_options=).

Вместо этого решение должно было использовать Rails.application.routes.default_url_options =.

Смежные вопросы