お世話になります。
現在railsのアプリで投稿機能を実装しました。
teratailの質問機能と同じような、質問をして、他のユーザーがコメントするというごく一般的な投稿機能です。
投稿機能、コメント機能自体は完成したのですが、**「コメントを投稿した人の名前を表示する方法」**がわからず、今回質問させていただきます。
イメージとしては、写真のようなイメージです。
Viewテンプレート
※user_id はCommentモデルのUserモデルを関連付けするためのカラム
#1 投稿させたコメントをループで取得 <% @post.comments.each do |com| %> <p><%= com.comment%></p> #コメント表示 <div class="comenter"> #2 コメントのid (com.user_id)でユーザーidと一致させてユーザーを取得しようと試みる <% user = @user.find_by_id(com.user_id) %> #3 ユーザー名 | 日付 を表示したい <%= user.name %> | <%= com.created_at.to_formatted_s(:without_second)%> </div> <% end %>
このソースではエラーになります
結論から述べますと、**「#2のところでコメントのuser_idが取得できていないから」**だと思っています
自分の試してみたことですが
1. #2でfind_by_id(2)のように、直接、数字で指定してあげると#3でユーザー名が表示される(エラーなし)
2.#3で<%= user.name %> → <%= com.user_id %>と書いてみると、コメントした人のid(数字)が表示される(エラーなし)
→ com.user_id と コメントしたユーザーのidは一致している
2.コメントを投稿した人ではなく、記事を投稿した人(teratailでいう、質問する側)のユーザーは表示できる
(idはparams[:id]で取得しました=urlから取得)
3.データベースを確認すると、has_many ,belongs_toはできていて、該当するコメントのuser_idとコメントを投稿した人のidは一致している
なので**「#2でuser_idが取得できていないことが原因」**だと考えています
つまり#2の部分で、user_idを取得し、Userモデルのコメントしたユーザーを一致させ、1つのユーザー情報を特定する処理ができれば <%= user.name %>という形でユーザー名を表示させることができると思います。
この場合、user_idを取得する方法はどのような方法になるのでしょうか。
文章がわかりにくいかもしれませんが、よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。