使用 acts_as votabable gem 点赞,并希望在用户点赞后将心形颜色永久更改为红色
using acts_as votabable gem for likes and want to change the heart color to red permanently after user has liked
我正在使用 acts_as votable gem 并且在用户使用 javascript 单击心形后我设法将心形颜色更改为红色.但是,一旦服务器刷新,心脏就会再次变灰,并且没有迹象表明用户是否喜欢当前的 post。如何在用户喜欢后永久更改颜色。我的想法是在投票 table 中将布尔值设置为 true,然后以某种方式在视图中检查它。但我不确定如何准确地实施它。任何帮助将不胜感激。
lists_controller.rb
def vote
if !current_user.liked? @list
@list.liked_by current_user
elsif current_user.liked? @list
@list.unliked_by current_user
end
vote.js.erb
<% if current_user.liked? @list %>
$('.fa-heart').addClass('liked');
<% else %>
$('.fa-heart').removeClass('liked');
<% end %>
$('.likes-count').html("<%= @list.get_upvotes.size %>")
show.html.erb
<div class="like">
<%= link_to like_list_path(@list), :class => "like-btn", method: :put, remote: :true do %>
<i class="fa fa-heart"></i>
<% end %>
<%= link_to "", "data-toggle" => "modal", "data-target" => "#likeModalLong" do %>
<span class="likes-count"><%= @list.get_upvotes.size %></span>
<% end %>
</div>
您可以创建一个助手来使 liked
css class 在您的视图中持久化:
application_helper
def liked_list(list)
liked = current_user.liked?(list) ? 'liked' : ''
content_tag(:i, '', class: "fa fa-heart #{liked}")
end
show.html.erb
<%= link_to like_list_path(@list), :class => "like-btn", method: :put, remote: :true do %>
<%= liked_list(@list) %>
<% end %>
我正在使用 acts_as votable gem 并且在用户使用 javascript 单击心形后我设法将心形颜色更改为红色.但是,一旦服务器刷新,心脏就会再次变灰,并且没有迹象表明用户是否喜欢当前的 post。如何在用户喜欢后永久更改颜色。我的想法是在投票 table 中将布尔值设置为 true,然后以某种方式在视图中检查它。但我不确定如何准确地实施它。任何帮助将不胜感激。
lists_controller.rb
def vote
if !current_user.liked? @list
@list.liked_by current_user
elsif current_user.liked? @list
@list.unliked_by current_user
end
vote.js.erb
<% if current_user.liked? @list %>
$('.fa-heart').addClass('liked');
<% else %>
$('.fa-heart').removeClass('liked');
<% end %>
$('.likes-count').html("<%= @list.get_upvotes.size %>")
show.html.erb
<div class="like">
<%= link_to like_list_path(@list), :class => "like-btn", method: :put, remote: :true do %>
<i class="fa fa-heart"></i>
<% end %>
<%= link_to "", "data-toggle" => "modal", "data-target" => "#likeModalLong" do %>
<span class="likes-count"><%= @list.get_upvotes.size %></span>
<% end %>
</div>
您可以创建一个助手来使 liked
css class 在您的视图中持久化:
application_helper
def liked_list(list)
liked = current_user.liked?(list) ? 'liked' : ''
content_tag(:i, '', class: "fa fa-heart #{liked}")
end
show.html.erb
<%= link_to like_list_path(@list), :class => "like-btn", method: :put, remote: :true do %>
<%= liked_list(@list) %>
<% end %>