form_tag 远程 true 未处理为 JSON 请求轨道 5



我的应用程序中有一个表单,如下所示

<%= form_tag(studios_path, method: :get, id: "studios_filter", remote: true) do %>
<% end %>

在我的应用程序中.js,我有这个

//= require jquery
//= require jquery_ujs
//= require rails-ujs
//= require jquery3
//= require turbolinks
//= require cocoon
//= require bootstrap
//= require_tree .

无论何时提交此表格,我都会得到它

Started GET "/studios?utf8=%E2%9C%93&workout_category_id_list=&neighbourhood_list=Kuala+Lumpur&studio_id_list=" for 127.0.0.1 at 2018-12-28 12:42:12 +0800
Processing by StudiosController#index as HTML

它作为 HTML 处理而不是作为 JSON 处理,因为已经添加了remote: true

关于为什么会发生这种情况的任何想法。选项用完

根据帖子中提到的描述,您似乎担心预期的请求类型("json")未通过控制器发送。

因此,对于帖子中提到的工作,请按如下方式更改代码:

<%= form_tag(studios_path, method: :get, id: "studios_filter", remote: true, :html => {:'data-type' => 'json'}) do %>

这将以 json 类型处理请求。

由于您在表单中使用method: :get,所有表单值都会附加到studios_path,因此您必须使用此方法作为post,并在要发布的路由中更改该方法。之后,您将开始将控制器中的所有表单字段作为hash

最新更新