【发布时间】:2020-08-25 15:14:43
【问题描述】:
所以,我有一段时间严重怀疑。我看到很多人在前端需要更新时使用 ajax 来发出服务器请求。但是使用 ajax 或例如使用 link_to 之间的真正区别是什么?例如,我有这个 ajax 代码,它使服务器请求喜欢一个帖子:
$(function(){
$(".pos-like").on("click", function(){
var post_id = $(this).data("id")
$.ajax({
url: "/post/like/" + post_id,
method: "POST"
}).done(function(response){
console.log(response)
})
})
});
但在另一种情况下,如果我在视图中对同一请求使用 link_to,它也可以工作。
<%= link_to like_path(post_id: post.id) do %>
<i class="fa fa-heart fa-2x post-like"></i>
<% end %>
然后在控制器中我只渲染一个部分,它只是改变了like按钮的颜色(使用jquery)。
我的问题是,为什么人们通常使用 Ajax 来进行更新,而他们只能在视图中使用例如 link_to。使用 ajax 有什么好处吗?
谢谢!!
【问题讨论】:
-
在您的
link_to示例中,您没有使用remote: true选项,因此,您的服务器请求是HTML请求而不是JS请求。因此,您重新渲染整个页面。有时,您可能不希望重新渲染整个页面,因此,您使用ajax调用。顺便说一句,使用remote: true也是ajax,即使您不必像第一个示例那样编写javascript 代码。另外,顺便说一句,没有“正确的方法”-这取决于您的需要。您概述的两种方法都是完全有效的。 -
@jvillian 是的,我忘记了远程 true。所以这两种方法都是正确的。非常感谢!
标签: ruby-on-rails ajax