BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(Rails X)

いいねする

def create
    @like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
    @like.save
    redirect_to("/posts/#{params[:post_id]}")
  end
<%= link_to("いいね","/likes/#{@post.id}/create", {method: "post"})  %>

いいねを消す

def destroy
    @like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
    @like.destroy
    redirect_to("/posts/#{params[:post_id]}")
  end
<%= link_to("いいね済","/likes/#{@post.id}/destroy", {method: "post"}) %>
<%= link_to("/likes/#{@post.id}/destroy", {method: "post"}) do %>
          <span class="fa fa-heart liked-btn"></span>
<% end %>

いいね数を表示

  • countメソッドは配列の要素数を取得するメソッドだが、テーブルのデータ数を取得するために利用することもできる
  • Like.where.count(post_id: @post.id) と書かないことに注意。手順見ずにやっていて、ここで引っかかった。カッコは必ずしも最後にある訳ではなく、指定するメソッドごとにカッコを入れるんでしょう、多分。
def show
    @post = Post.find_by(id: params[:id])
    @user = @post.user
    @likes_count=Like.where(post_id: @post.id).count
  end

その人がいいねした投稿の一覧を表示

  • 手順見ずに行けた!偉いぞ俺!
  • ぐるぐる回る感じですが、頑張ったらなんとか理解できますね。
  • これ以上複雑になったらきつい
def likes
    @user=User.find_by(id: params[:id])
    @likes=Like.where(user_id: @user.id)
  end
<% @likes.each do |like| %>

      <% post=Post.find_by(id: like.post_id)  %>
      
      <div class="posts-index-item">
        <div class="post-left">
          <img src="<%= "/user_images/#{post.user.image_name}" %>">
        </div>
        <div class="post-right">
          <div class="post-user-name">
            <%= link_to(post.user.name, "/users/#{post.user.id}") %>
          </div>
          <%= link_to(post.content, "/posts/#{post.id}") %>
        </div>
      </div>

    <% end %>