【问题标题】:form_with not submitting as AJAXform_with 不作为 AJAX 提交
【发布时间】:2019-02-25 22:59:31
【问题描述】:

我的应用中有一个表单,我通过以下方式声明:

= form_with model: project, remote: true, method: :put do |f|
  = f.select :selected_draw, options_for_select(project.draws.pluck(:number, :id), draw.id), {}, class: 'form-control', onchange: "this.form.submit()"

而且我似乎无法将其作为远程表单提交,即使在我的应用程序的其他部分我确实使用远程表单并且在此表单上它确实在表单上设置了data-remote 属性。谁能告诉我我可能做错了什么?

【问题讨论】:

  • 也许你忘记了控制器中的 format.js?
  • form_with 默认使用 ajax 提交,除非它在某处被覆盖。你试过用local: true替换remote: true吗? remote 不是 form_with 的选项我不认为 api.rubyonrails.org/v5.1/classes/ActionView/Helpers/…
  • @Catmal 它就在那里,请求只是作为普通表单提交到达控制器
  • @kasperite 它确实需要它,如果您查看文档,它只是由于某种原因无法正常工作。
  • application.js 中有//= require jquery_ujs//= require rails-ujs 吗?

标签: javascript ruby-on-rails ajax xmlhttprequest


【解决方案1】:

使用this.form.submit() 不会触发“提交”事件,因此不会调用 Rails 回调将其作为远程表单进行处理。

请改用onchange="Rails.fire(this.form, 'submit')"。这样你就可以告诉 Rails javascript 对象触发事件。

编辑:这是使用 rails-ujs,我不确定它是否与 jquery-ujs 相同

【讨论】:

  • 我得到了 Uncaught ReferenceError: Rails is not defined
  • 你的 application.js 上有 rails-ujs 吗?
猜你喜欢
  • 2018-11-28
  • 2023-01-31
  • 2018-05-19
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
相关资源
最近更新 更多