Rails:更改区域设置和保留页面参数

我有一个导航栏,其中包含指向不同语言的链接:

 

问题是当用户尝试在包含URL中的其他参数的页面上切换语言时。 此时更改语言环境会重新加载页面并删除所有其他参数。

那么,如何将所有参数从当前页面传递到语言环境切换链接?

例如,何时

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

打开,用户切换语言环境,

 /page/new?locale=en 

打开,两个附加参数都从url中删除。

编辑:这不是一个很好的方式来做这件事。 见下面的评论。

问题是,在创建区域设置切换器链接时,您没有将当前参数传递给link_to

将导航栏链接更改为:

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

另请参阅: 向link_to添加查询字符串参数

如果你需要locale param来保留所有请求,那么使用这种方法是很好的:

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

来自rails guide