【问题标题】:form_tag remote true not processing as json request rails 5form_tag 远程 true 不作为 json 请求处理 rails 5
【发布时间】:2018-12-28 04:47:18
【问题描述】:

我的申请中有这样的表格

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

<% end %>

在我的 application.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

由于已经添加了remote: true,它正在处理为 HTML 而不是处理为 JSON。

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

【问题讨论】:

  • 如果方法不兼容,remote: true 会将请求的格式设置为 JS 而不是 JSON。

标签: ruby-on-rails ruby-on-rails-5 rails-ujs


【解决方案1】:

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

所以,为了它像帖子中提到的那样工作,更改代码如下:

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

这会将请求处理为 json 类型。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我在同样的问题上苦苦挣扎:无论我做什么,Rails 5 都将我的remote: true 表单提交为HTML。我的解决方案是添加

      //= require jquery_ujs
      

      application.js。 OP 在他们上面的文件中已经有了这个,这就是让我试一试的原因。不知道为什么 OP 仍然有问题,但这为我解决了它......所以也许这会为其他人解决它!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        • 2017-11-16
        相关资源
        最近更新 更多