我按照rails教程提交了一个带有ajax的表单。我们在remote: true
中使用了form_for
:
<%= form_for @task, remote: true do |f| %>
一切正常。但我对remote: true
感到困惑。 remote: true
的目的是什么?
答案 0 :(得分:8)
<强> JS 强>
remote: true
是Rails UJS (unobtrusive Javascript)驱动程序的一部分。它只是将data-remote: true
属性添加到您添加到它的任何对象,允许Rails的UJS脚本将其绑定到某些ajax功能......
请注意
data-remote="true"
。现在,表单将由Ajax提交 而不是浏览器的正常提交机制。你可能不想只是坐在那里填充, 虽然。你可能想要成功做一些事情 提交。为此,请绑定到ajax:success事件。失败的时候 使用ajax:错误。看看:
It's pretty simple really ....
它基本上会为您网页上.on
的所有元素指定一个Javascript data-remote: true
绑定。这就是为您发送Ajax请求的原因。
<强>钩强>
需要注意的重要一点是,此方法会创建several "hooks",您可以将其与其他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!");
});
答案 1 :(得分:2)
答案 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上提升/下调答案