前提・実現したいこと
ruby on rails を使いインスタグラムのようなsnsを作成中です。
現在いいね機能の実装中なのですが、いいねの非同期通信は完了している状態です。
投稿一覧での「いいね」の横にいいねをしたユーザーの名前が表示されるようにしたいです。
Aという投稿に複数人いいねを押すことになると思うのですが、表示をいいねを押したユーザー1人のみ代表して表示させ他を「他…」のように省略してブラウザに表示させたいのですがうまくいきません。
該当のソースコード
_like.html.erb
<% if post.liked_by?(current_user) %> <%= link_to(post_add_path(post), method: :delete, remote: true, id: :"like-button-#{post.id}", class:"like-button") do %> <%= image_tag "like_red.png", class:"like-icon" %> <% end %> <span class="like-name">LIKE!</span> : <% post.likes.each do |like| %> <%= like.user.name %> <% end %> <% else %> <%= link_to(post_add_path(post), method: :post, remote: true, id: :"like-button-#{post.id}", class:"like-button") do %> <%= image_tag "like.png", class:"like-icon" %> <% end %> <span class="like-name">LIKE!</span> : <% post.likes.each do |like| %> <%= like.user.name %> <% end %> <% end %>
likes_controller
class LikesController < ApplicationController before_action :authenticate_user! before_action :set_like def create user = current_user post = Post.find(params[:post_id]) @like = Like.create(user_id: user.id, post_id: post.id) end def destroy user = current_user post = Post.find(params[:post_id]) like = Like.find_by(user_id: user.id, post_id: post.id) like.delete end private def set_like @post = Post.find(params[:post_id]) end end
試したこと
truncateを使い文字数を制限してみたところ、ユーザーの名前に対しての文字数がかかってしまい、求めている挙動にはなりませんでした。
補足情報(FW/ツールのバージョンなど)
プログラミング初心者です。
説明不足でしたら申し訳ありません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー