在rails中调用ajax中的update方法后,在索引视图中更新div?

时间:2014-06-28 15:10:55

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

我有一个包含帖子列表的页面,我使用ajax使用will_paginate进行分页,每个帖子附近都有一个"Like" button。如果用户点击“赞”按钮,那么我需要update我的表中的喜欢计数,并且我想将“喜欢”按钮更改为"Dislike"

说,例如,如果我在帖子的第二页,我点击“赞”按钮,我需要调用我的更新方法,我怎么能回到同一页面并使用ajax更改按钮

如果我的更新逻辑采用相同的索引方法,我可能会这样做但如果我的逻辑位于index.html.erb方法中,我怎么能替换update中的内容。

请帮帮我。感谢。

1 个答案:

答案 0 :(得分:2)

你的问题是:

Say, for example if I am in the second page of the post and I click on the "Like" button I would need to call my update method and how could I bring back to the same page and change the button using ajax.

让我们逐一完成这些步骤:

一个。为您的自定义方法创建一个路线,您将对其进行更新,并且必须是 post 路线,因为我们想要发送要更新的帖子ID

post '/update_post/:id' => "your_controller#update_post", as: :update_post

湾创建链接:

<%= link_to "Like", update_post_path(post.id),id: "post_#{post.id}",method: :post %>

℃。在您的方法中设置 respond_to block 更新您的帖子:

def update_post
  @post = Post.find(params[:id])
  # update your post here
  respond_to do |format|
    format.js{} #this will allow you to have update_post.js.erb in your view
  end
end

d。更新update.js.erb中的您的链接

$("#post_<%= @post.id %>").text("Dislike");

现在,因为我们正在更新您的链接并通过ajax发布,您将保持在同一页面,您不必担心分页。有关更多信息,请参阅Working with javascript in rails