【问题标题】:query strings are persisting across all controllers in error查询字符串在所有控制器中都存在错误
【发布时间】:2012-03-20 22:28:43
【问题描述】:

我有一个 rails 3 应用程序,我在其中传递一些字符串查询,如下所示:

<%= link_to "All", work_orders_path(params.merge({:status_filter => "E", :sort_filter => params[:sort_filter]})) %>

在我对 work_order 的看法中,一切都是明智的,这就是这些参数的用途(对现有工作订单进行排序和过滤。)

我遇到的问题是,当我使用 link_to 添加新工单或尝试将 link_to 连接到另一个控制器时,:status_filter:sort_filter 都持续存在,导致路由错误。

例如,当我想点击索引查看所有技术人员(其中这些不适用我得到

没有路由匹配 {:sort_filter=>nil, :status_filter=>"E", :controller=>"技术员"}

我到处寻找解决方案,但到目前为止我还没有想出任何办法。我试过params.delete,没有骰子。我知道必须有一种简单的方法可以从link_to 中的 URL 中清除这些内容,但我无法弄清楚。

【问题讨论】:

  • 好像你正在改变 params 值。你确定你只使用merge而不是merge!update吗?
  • 没有真正理解问题,他们在两个不同的视图之间坚持?或者当您单击“全部”链接时会出现问题?
  • 不使用合并!或更新。问题是它们在整个应用程序中的每个 link_to(甚至在不同的控制器中)都存在,到目前为止我还无法清除它们。
  • 我只是尝试在我的 link_to 中使用 params.except 去除不需要的参数,但它仍然无法正常工作。
  • 您是否在某处实现了default_url_options

标签: ruby-on-rails routes params


【解决方案1】:

我发现我所有导航的这些链接都在我的 application.html.erb 中,所以我在那里使用的任何参数都会在整个应用程序中进行。我还没有弄清楚为什么。我将这些链接移至 work_orders 中的 index.html.erb 文件,现在其他一切正常。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多