使用 ujs 手动提交远程表单的 Rails 方式

Posted

技术标签:

【中文标题】使用 ujs 手动提交远程表单的 Rails 方式【英文标题】:The rails way to maunally submit a remote form with ujs 【发布时间】:2018-10-04 14:06:56 【问题描述】:

导轨 5.2.0

假设我有一个没有提交按钮的表单,并且我想要另一个事件,例如在输入输入后触发提交,但仍然享受所有 ujs 功能。

这里的最佳做法是什么,我应该调用像 Rails.ajax 这样的方法吗? 或者通过 Rails.fire 触发事件?是否有与此问题相关的文档?

我的案例是在 1 秒内取消输入,然后提交。

【问题讨论】:

但是表格怎么知道你输入了表格呢?可以说我必须输入“foo bar”。它怎么知道,你输入“foo”后输入完了? 只触发表单上的提交事件不起作用? 尝试通过 Rails 触发:trigger('submit.rails')trigger('click.rails') 我不是在问什么有效,我是在问一个官方的方式,没有点击按钮...... 我相信您对Rails.fire 的建议接近于官方,仅基于rails-ujs 相对较新并且Rails.fire 是该库提供的事件这一事实。 This comment 也支持Rails.fire。你最后有没有发现其他更官方的东西? 【参考方案1】:

不确定是否有官方答案,但这个问题的变体对我来说效果很好:

onchange: "$(this).closest('form').submit();"

onchangeonbluronclick。显然,这是一个 jquery 解决方案。但是概念应该很清楚。

【讨论】:

以上是关于使用 ujs 手动提交远程表单的 Rails 方式的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile 在使用 UJS 远程链接接受标头时中断 Rails respond_to

如何绑定到表单的 ajax:使用 JQuery/Rails UJS 在 typescript 中取得成功

Rails 4 不使用 Remotipart 远程提交表单

让引导程序的按钮收音机与 Rails UJS(数据远程)配合得很好?

如何发送远程表单参数

文档准备好后通过 Ajax 加载的 Rails 远程表单未提交