我正在创建一个博客,访问者可以“喜欢”每篇文章。我想限制他们只喜欢一次。我研究了不同的选项,我认为创建 cookie 是针对这种特殊情况的最佳选项。不过,我愿意接受其他建议。
这是饼干:
cookies[:liked] = { value: true, expires: 1.year.from_now }
我已将 cookie 放在我的 likes_controller.rb 中,如下所示:
class LikesController < ApplicationController
def create
@like = Like.new(params[:like])
if @like.save
cookies[:liked] = { value: true, expires: 1.year.from_now }
redirect_to :back, notice: 'Glad you liked the post!'
else
redirect_to :back, notice: "Something went wrong liking the post."
end
end
end
在我的 _post.html.erb 部分中,我有我的帖子标题,喜欢,这里的帖子内容是“喜欢”部分:
<% if cookies[:liked] == true %>
<div class="pull-right heart liked">♥</div>
<% else %>
<div class="pull-right heart">
<%= form_for (Like.new) do |f| %>
<%= f.hidden_field :post_id, value: post.id %>
<%= f.submit '♥', class: "hearts" %>
<% end %>
</div>
<% end %>
我没有收到任何错误,但它似乎也没有设置 cookie 或做任何事情。您有什么建议或见解吗?