【问题标题】:Correct way to make view updates in Rails在 Rails 中进行视图更新的正确方法
【发布时间】: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


【解决方案1】:

Remote elements 在 Rails 的观点中实际上是在幕后进行 Ajax 调用的东西。所以这里的区别在于:

  • 第一个示例,当单击某物时,您明确调用了您想要调用的任何内容
  • 您使用 Rails Ajax 助手实现相同目标的第二个示例实际上将调用与第一个示例非常相似的 JS 块

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多