我有一个 Rails 3 博客。我希望每个帖子都有一个“喜欢”按钮。单击它将将此操作保存到数据库并存储到刚刚喜欢该帖子的用户的 cookie 中(再次禁止相同的操作)。
我写了一个简单的动作来做到这一点:
def like
render :nothing => true
id = params[:post_id]
cookies.permanent[:like_history] ||= []
unless cookies.permanent[:like_history].include? id
cookies.permanent[:like_history] << id
@post = Post.find(id)
@post.update_column(:likes, @post.likes + 1)
end
end
但是NoMethodError (undefined method '[]' for nil:NilClass)
当我尝试记录事情时,我得到了。它指向这一行:cookies.permanent[:like_history] ||= []
好像 cookies.permanent 不是一个数组。
我在这里用 cookie 做错了吗?