远程的目的:在rails中为true

时间:2015-10-09 06:29:41

标签: ruby-on-rails ajax ruby-on-rails-4

我按照rails教程提交了一个带有ajax的表单。我们在remote: true中使用了form_for

<%= form_for @task, remote: true do |f|   %>

一切正常。但我对remote: true感到困惑。 remote: true的目的是什么?

4 个答案:

答案 0 :(得分:8)

<强> JS

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

Some definition from Rails

  

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

     

你可能不想只是坐在那里填充,   虽然。你可能想要成功做一些事情   提交。为此,请绑定到ajax:success事件。失败的时候   使用ajax:错误。看看:

It's pretty simple really ....

enter image description here

它基本上会为您网页上.on的所有元素指定一个Javascript data-remote: true绑定。这就是为您发送Ajax请求的原因。

<强>钩

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

enter image description here

这允许您使用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!");
});

答案 1 :(得分:2)

remote: true生成data-remote="true"为html

它通过form而不是浏览器的正常提交机制

提交ajax

Reference

答案 2 :(得分:2)

:remote => true标记用于视图文件中的链接或表单标记,用于要触发 AJAX 调用的元素,例如

<%= form_for @task, remote: true do |f| %>

:remote => true,Rails 不会自动切换视图,这样就可以运行JQuery。

:remote => true与表单一起使用的主要目的是,表单由Ajax而不是浏览器的正常提交机制提交。

我强烈建议您阅读Official Rails Documentation for Working with JavaScript in Rails。 在那里你会找到一些使用:remote => true表格,链接等的例子,它们可以帮助你理解Rails中:remote=true的用途: - )

答案 3 :(得分:1)

remote: true允许提交表单或只是生成请求而不刷新页面

你也可以使用remote:true和链接 远程表单提交的最佳示例是在stackoverflow上提升/下调答案