【问题标题】:Route perform wrong action on submit form_with路由对提交 form_with 执行错误操作
【发布时间】:2023-01-31 21:35:32
【问题描述】:

我的 Rails 应用程序有问题。

我有一个表格,应该提交一些要搜索的字段到 /cities/search/<params_here>。

但是,当我提交表单时,路由会执行错误操作,并执行 set_city 函数...(???为什么会这样???)

如果该路由存在并在其他路由从 :resources 生成之前声明,那应该行不通吗?

【问题讨论】:

标签: ruby-on-rails routes


【解决方案1】:

上面的代码好像有两个问题。

1.form_with中的网址:

理想的 URL 应该是url: "cities/search",。 由于您使用的是form_with,因此这些值将以查询参数的形式提供。 这是我们的第二个变化出现的地方。

2.您设置的路线:

它应该是get '/cities/search', to: 'cities#search',并且如上所述,表单字段及其值将在查询参数中可用。

在 cities_controller 的搜索操作中,您将使用 params[:query]params[:search] 获取参数。 请检查一次form helpers,以便您清楚地知道它正在工作。

我没有对此进行测试,所以请告诉我这是否有帮助,以及在进行上述更改后是否还有其他问题。 此外,最好以文本格式而不是图像格式在问题中发布代码。参考this link 了解原因。

【讨论】:

    【解决方案2】:

    您可以使用 a collection route 而无需考虑路由优先级:

    resources :cities do
      get 'search', on: :collection
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多