Rails: changing locale and keeping page parameters

跟風遠走 提交于 2019-12-22 05:02:50

问题


I have a navbar with links to different languages:

<%= link_to t('header.english'), locale: "en" %>

The problem is when user tries to switch language on a page which contains additional parameters in the url. Changing locale at this point reloads the page and strips all the additional parameters.

So, how do I pass all the parameters from the current page to the locale switch link?

For example, when

/page/new?param1=1&param2=2

is open, and user switches the locale,

/page/new?locale=en

is opened, and both additional parameters are stripped away from the url.


回答1:


EDIT: THIS IS NOT A GOOD WAY TO DO THIS. See comments below.

The problem is that you are not passing the current params to link_to when you create the locale switcher link.

Change your navbar link to:

<%= link_to t('header.english'), params.merge(locale: "en") %>

See also: Add querystring parameters to link_to




回答2:


If you need locale param to stay in all requests it's good to use this approach:

# app/controllers/application_controller.rb
def default_url_options(options={})
  { locale: I18n.locale }
end

from rails guide



来源:https://stackoverflow.com/questions/12727609/rails-changing-locale-and-keeping-page-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!