Ruby On Rails -使用“Format”作为URL GET参数?

5gfr0r5j  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(82)

我有一个搜索页面,我更新页面上的URL参数,因为用户添加或删除了过滤器。这使我能够深入链接到页面(即。转到/search?location=new+york&time=afternoon将设置locationafternoon过滤器)。
我也有一个名为format的过滤器。我注意到在URL中传入?format=whatevervalue,然后用该参数重新加载页面会导致Rails返回Completed 406 Not Acceptable错误。format似乎是一个保留的Rails URL参数。
是否可以取消对特定端点的此参数名称的保留?

ux6nzvsh

ux6nzvsh1#

在Ruby on Rails的URL上下文中,至少有五个保留参数名:methodcontrolleractionidformat
您不能将这些密钥用于除其预期用途之外的任何其他用途。
如果您尝试这样做,您将覆盖Rails内部设置的值。在您的示例中,通过设置?format=whatevervalue,您覆盖了默认格式(html),并且您的应用程序将尝试查找和呈现whatevervalue模板,而不是html的模板。这显然行不通。
有趣的事实:除了使用默认的Rails路径格式(如/users/123/edit),你还可以像这样使用查询参数:/?controller=users&id=123&action=edit&format&html
我的建议是:不要试图对抗Rails约定。当你试图绕过基本的Rails约定时,它会在以后伤害你,因为它会使更新变得更加困难,常见的gem可能会崩溃,意想不到的副作用会发生。只需要为该参数使用另一个名称。

相关问题