###前提・実現したいこと
コメント(@comment)を投稿(@micropost)のアコーディオンメニューに表示したい。
そのために、このようなコードを成立させたい。
【page_controller.rb】
ruby
class PageController < ApplicationController def index ・ ・ @micropost = Micropost.find(params[:id])★エラーでます。 @micropost = Micropost.includes(:user).find(params[:id])★エラーでます。 @comments = @micropost.comments.includes(:user).all @comment = @micropost.comments.build(user_id: current_user.id) if current_user ・ ・ end
【理想図】
【現状図】
###発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in PageController#index Couldn't find Micropost without an ID
Pageでは@micropostのidを受け取ることができず、エラーが出てしまいます。
Page#index内にこのような変数を置きたいです。
ruby
@micropost = Micropost.find(params[:id]) @micropost = Micropost.includes(:user).find(params[:id])
###該当のソースコード
【page_controller.rb】
ruby
class PageController < ApplicationController def index @micropost = current_user.microposts.build @feed_items = current_user.feed.paginate(page: params[:page]) @micropost = Micropost.find(params[:id])★エラーでます。 @micropost = Micropost.includes(:user).find(params[:id])★エラーでます。 @comments = @micropost.comments.includes(:user).all @comment = @micropost.comments.build(user_id: current_user.id) if current_user ・ ・ end
【index.html.erb】
ruby
##アコーディオンメニュー <script> $(function(){ $("#acMenu dt").on("click", function() { $(this).next().slideToggle(); }); }); </script> <!-- タイムライン --> <h3>Micropost Feed</h3> <%= render 'shared/feed' %> →_micropost.html.erbを呼び出します。
【_micropost.html.erb】
ruby
<li id="micropost-<%= micropost.id %>"> ・ ・ ・ <dd> <!-- コメント --> <div> <%= render 'comments/array' %> ←@commentを表示するパーシャルです。 <%= render 'calls/array' %> <%= render 'says/array' %> <%= render 'insists/array' %> </div> </dd> </dl> ・ ・ ・ </li>
【calls/_array.html.erb】
ruby
<% @comments. each do |comment| %> <div> <strong><%= user_name(comment, @user) %></strong> </br> <p><%= body(comment) %></p> <% if user_signed_in? && comment.user == current_user %> <p><%= link_to 'Delete', comment_path(comment), method: :delete %></p> <% end %> </div> <% end %>
###補足情報(言語/FW/ツール等のバージョンなど)
・アコーディオンメニューは各投稿に設定してあり、
各投稿にコメントを投稿し、投稿を表示させたいです。
現状、コメントの投稿はできています。(データベース確認済み)
しかし、コメントの表示ができません。
おそらく、@micropostを正しくpage#indexに置いていないため、@micropostに紐づいた@commentを表示できない、ということだと思います(*´Д`)
まだ回答がついていません
会員登録して回答してみよう