远程的目的:在rails中为true

Has*_*mad 2 ajax ruby-on-rails ruby-on-rails-4

我按照rails教程,我们提交了一个带有ajax的表单.我们用remote: trueform_for:

<%= form_for @task, remote: true do |f|   %>
Run Code Online (Sandbox Code Playgroud)

一切正常.但我很困惑remote: true.目的是remote: true什么?

Ric*_*eck 8

JS

remote: trueRails UJS(不显眼的Javascript)驱动程序的一部分.它只是将data-remote: true属性添加到您添加它的任何对象,允许Rails的UJS脚本将其绑定到某些ajax功能......

Rails的一些定义:

请注意data-remote="true".现在,表单将由Ajax而不是浏览器的正常提交机制提交.

不过,你可能不想只是坐在那里.您可能希望在成功提交后做一些事情.为此,请绑定到ajax:success事件.失败时,使用ajax:error.看看这个:

真的很简单 ....

在此输入图像描述

它基本上将Javascript .on绑定分配给页面上的任何元素data-remote: true.这就是为您发送Ajax请求的原因.


需要注意的重要一点是,此方法会创建几个"钩子",您可以将其与其他javascript一起使用:

在此输入图像描述

这允许您使用该remote: true功能,并使用上面的钩子自定义发生的事情......

#app/views/messages/new.html.erb
<%= form_for @messages, remote: true do |f| %>
   <%= f.submit %>
<% end %>

#app/assets/javascripts/application.js
$(document).on("ajax:success", "#messages", function(event, data, status, xhr) {
    alert("Form submitted, thank you!");
});
Run Code Online (Sandbox Code Playgroud)