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 が配列ではないかのように、この行を指しています。
ここでクッキーに何か問題がありますか?