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' )
我试图在 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' )