javascript - Rails ajax 关注按钮

标签 javascript jquery ruby-on-rails ajax

我正在创建一个页面,其中包含书籍列表以及每本书上的“关注”按钮。

共享/_books.html.erb

<% @books.each do |book| %>
 <%= book.name %>
 <% if book.followed_by(current_user) %>
  <%= link_to 'Unfollow', unfollow_book_path(book), remote: true %>
 <% else %>
  <%= link_to 'Follow', follow_book_path(book), remote: true %>
 <% end %>
<% end %>

Controller /books_controller.rb

def index
 @books = Book.all
 respond_to do |format|
   format.html
   format.js
 end
end

在我的follow.js.erb中,当我点击follow按钮时,如何将按钮更改为unfollow按钮?目前我正在使用一种方法来呈现这样的书籍列表:

书籍/follow.js.erb

$('#books').html("<%= escape_javascript(render partial: 'shared/books' , collection: @books, as: "book") %>");

这是有效的,但它再次呈现整个书籍列表,这是我不想要的,有什么想法我怎样才能刷新关注按钮?谢谢

最佳答案

实现此目的的一种方法是在部分中的 if/else block 周围创建一个 div。为该 div 指定一个基于 book.id 的 id,因此该 id 是唯一的。

在您的 follow.js.erb 中,重用您的部分逻辑。

<% if @book.followed_by(current_user) %>
  $("#book-<%= @book.id %>").html("<%= link_to 'Unfollow', unfollow_book_path(@book), remote: true %>")
 <% else %>
  $("#book-<%= @book.id %>").html("<%= link_to 'Follow', follow_book_path(@book), remote: true %>")
 <% end %>

您可能需要更改您的路线/ Controller 。我不确定你的 unfollow_book_path 和 follow_book_path 是如何工作的。

关于javascript - Rails ajax 关注按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104208/

相关文章:

jquery - jQuery UI 的星级评定小部件

javascript - 如何通过 jquery datepicker 或 bootstrap datepicker 设置 hijri datepicker?

ruby-on-rails - Spree Deface::Override :original 关键字是什么?

javascript - Angular Devise 非加密密码

css - rails : Is it better to display images with image_tag or css background image?

javascript - Jquery追加覆盖相同的元素

javascript - 创建动态元素和 document.write

javascript - 在整个表单上应用 onChange 事件

javascript - 如何在 Twitter typeahead/bloodhound 的建议中显示多个返回值?

javascript - Ember.js 如何在没有 ember 数据的情况下从数组 Controller 中删除对象