Rails UJS更改输入字段

时间:2016-06-04 00:21:11

标签: ruby-on-rails ajax

我有一个输入字段。当用户更改其值时,几秒钟后,我希望它向服务器发送一个post请求,以便我可以更新该属性。我正在使用UJS并找到this文档。

它表示当您同时使用data-remotedata-url时,它会在元素更改事件后将AJAX请求发送到给定的URL。我有一个这样的帮手:

f.text_field :name, class: "form-control", data: {remote: true, url: contact_path(@contact), method: :post }

我检查html,它看起来像这样:

<input class="form-control" data-method="post" data-remote="true" data-url="/contacts/1" id="contact_name" name="contact[name]" type="text" value="sdfdf dsfdsfdgf">

当我更改文本字段的值时,它不会向服务器发送发布请求。什么都没发生。如果我没有使用Rails UJS,我会在js keyup事件上发送给服务器。我错过了Rails UJS的东西吗?

2 个答案:

答案 0 :(得分:0)

我明白了。首先,仅在输入字段失去焦点后才进行ajax调用。因此它不会在keyup事件上触发,而是在focusout事件上触发。换句话说,您必须单击或输出输入字段,然后才会触发ajax调用。

第二个问题是Chrome控制台显示404错误,因为我使用POST方法向contacts / 1发送请求。 contacts / 1响应PUT方法,而不是POST方法。当我更改为PUT方法并从输入字段中跳出选项时,请求到达了我的控制器。

答案 1 :(得分:0)

在application.js中初始化rails-ujs的正确方法是

import Rails from 'rails-ujs'
Rails.start()