代码之家  ›  专栏  ›  技术社区  ›  Lloyd Banks

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

  •  0
  • Lloyd Banks  · 技术社区  · 3 年前

    我有一个搜索页面,当用户添加或删除过滤器时,我会更新页面上的URL参数。这使我能够深入链接到页面(即 /search?location=new+york&time=afternoon 将设置 location afternoon 过滤器)。

    我还有一个过滤器名为 format .我注意到 ?format=whatevervalue 指向URL,然后使用该参数重新加载页面,会导致Rails返回 Completed 406 Not Acceptable 错误看来 总体安排 是一个保留的Rails URL参数。

    对于特定端点,是否仍有取消保留此参数名称的方法?

    0 回复  |  直到 3 年前
        1
  •  1
  •   spickermann    3 年前

    在Ruby on Rails中的URL上下文中,至少有四个保留参数名: controller , method , id , format .

    您不能将这些密钥用于其预期用途以外的任何用途。

    如果您尝试这样做,您将覆盖Rails在内部设置的值。在您的示例中,通过设置 ?format=whatevervalue 您可以覆盖默认格式( html )应用程序将尝试查找并呈现 whatevervalue 模板而不是 html 格式化模板。这显然行不通。

    有趣的事实:不是使用默认的Rails路径格式,比如 /users/123/edit 您可以使用如下查询参数: /?controller=users&id=123&method=edit&format&html .

    我的建议是:不要试图反对Rails惯例。无论何时,只要你试图绕过基本的Rails约定,它都会在以后伤害你,因为它会使更新变得更加困难,常见的宝石可能会损坏,意外的副作用会发生。只需为该参数使用另一个名称。