我的应用程序中有一个表单,如下所示
<%= 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
我遇到了同样的问题:无论我做什么,Rails 5 都会HTML
处理我的remote: true
表单提交。我的解决方案是添加
//= require jquery_ujs
到application.js
.OP 在上面的文件中已经有这个了,这就是让我尝试的原因。不知道为什么OP仍然有问题,但这为我解决了它......所以也许这会为其他人解决它!