【问题标题】:Rails UJS changing input fieldsRails UJS 更改输入字段
【发布时间】:2016-10-04 03:45:34
【问题描述】:

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

它说当你同时使用data-remotedata-url 时,它会在元素上的更改事件之后向给定的url 发送AJAX 请求。我有一个这样的助手:

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 的某些内容?

【问题讨论】:

  • 您的 application.js 中是否需要它?
  • @Bartosz 是的,因为它适用于选择元素和表单元素。它不适用于输入字段。

标签: ruby-on-rails ajax


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我想通了。首先,仅在输入字段失去焦点之后才进行 ajax 调用。所以它不是在 keyup 事件上触发,而是在 focusout 事件上触发。换句话说,你必须点击离开或跳出输入字段,然后才会触发ajax调用。

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

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多