###実現したいこと
ログインしていないユーザーもいいね!をできるようにしたい
現在、いいね!を押すと、いいね!したユーザーのuser_idといいね!されたポストのpost_idを取得し、likesが作成される方法をとっています。Viewでは、if文でいいね!しているか区別しています。
このような方法だと、ログインしていることが前提になってしまいます。
ログインせずにいいね!をする良い方法はとかはあるのでしょうか?
その場合でも現状と変わらずに、いいね!は一回までしかできないような仕様です。
イメージとしては、https://note.com のように
ログインせずに、noteに対しいいね!を押せる状況です。
Routes
1create_table "likes", force: :cascade do |t| 2 t.integer "user_id" 3 t.integer "post_id" 4 t.datetime "created_at", null: false 5 t.datetime "updated_at", null: false 6 end
Controller
1def create 2 @like = Like.new(user_id: @current_user.id, post_id: params[:post_id]) 3 @like.save 4end 5def destroy 6 @like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id]) 7 @like.destroy 8 @post = @like.post 9end
View
1<% if @current_user.like?(post) %> 2 <%= link_to("/likes/#{post.id}/destroy", method: :post, remote: true) do %> 3 <span class="fa fa-heart unlike-btn"></span><% end %> 4<% else %> 5 <%= link_to("/likes/#{post.id}/create", method: :post, remote: true) do %> 6 <span class="fa fa-heart like-btn"></span><% end %> 7<% end %>
お分かりの方いらしたらご教示お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/16 11:00