Rails 6 中更改语言环境时如何保留查询参数

How to keep the query params when changing locale in Rails 6

我试图在 Rails 6 中更改语言环境时保留查询参数,我只找到了 default_url_options 方法,如果我尝试将参数传递给它,它就无法工作,抛出 unpermitted参数传递异常

例如:

一个URL有http://localhost:3000/some_path?token=ABcasdjlaweQWd

应该改为http://localhost:3000/de/some_path?token=ABcasdjlaweQWd

但目前,它只会变成:http://localhost:3000/some_path & 我丢失了查询参数

保持安全很重要,所以我不想通过破解来禁用参数过滤器,但应该可以在语言更改期间传递参数而无需大的破解。

更新:

我正在通过导航栏 link_to btn(针对不同的区域设置)更改本地设置,例如:link_to url_for( :locale => 'fr' ) 会将当前 url 的区域设置部分更改为法语区域设置

在语言更改时维护查询参数的正确方法是什么?

在不覆盖 default_url_options 的情况下,更好的方法是使语言更改按钮的行为有所不同,这样它就不会删除查询参数

所以不是这个:

= link_to url_for( locale: 'en' )

应该改成这样,这样会保留参数:

 = link_to request.params.merge( locale: 'en' )