我正在创建一个页面,其中包含书籍列表以及每本书上的“关注”按钮。
共享/_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/