【发布时间】:2023-01-31 21:35:32
【问题描述】:
我的 Rails 应用程序有问题。
我有一个表格,应该提交一些要搜索的字段到 /cities/search/<params_here>。
但是,当我提交表单时,路由会执行错误操作,并执行 set_city 函数...(???为什么会这样???)
如果该路由存在并在其他路由从 :resources 生成之前声明,那应该行不通吗?
【问题讨论】:
标签: ruby-on-rails routes
我的 Rails 应用程序有问题。
我有一个表格,应该提交一些要搜索的字段到 /cities/search/<params_here>。
但是,当我提交表单时,路由会执行错误操作,并执行 set_city 函数...(???为什么会这样???)
如果该路由存在并在其他路由从 :resources 生成之前声明,那应该行不通吗?
【问题讨论】:
标签: ruby-on-rails routes
上面的代码好像有两个问题。
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 了解原因。
【讨论】:
您可以使用 a collection route 而无需考虑路由优先级:
resources :cities do
get 'search', on: :collection
end
【讨论】: