Rails tutorialの14章の内容を参考に、トップページでログインユーザーが投稿したpostおよび、ログインユーザーがフォローしているユーザが投稿したpostをフィードで表示しようとしています。
<%= render @feed_items %>で次のエラーが表示され困っています。
どなたかお知恵を拝借いただけますと幸いです。(><)
作業環境はcloud9上です。
トップページのビュー
[/views/static_pages/home.html.erb] <div class="loginsection"> <% if logged_in? %> <P>ここにログイン後のトップページの内容を記述</P> <div class="col-md-8"> <%= render 'shared/feed' %> </div> <% else %> <%= render 'layouts/loginform' %> <% end %> </div>
パーシャルのファイルがないと言っているようですが…
ファイルとしては以下のものを準備しています。
[/views/shared/_feed.html.erb] <% if @feed_items.present? %> <ol class="posts"> <%= render @feed_items %> </ol> <%= will_paginate @feed_items %> <% end %>
[/views/shared/_post_form.html.erb] <%= form_for(@post) do |f| %> <%= render 'shared/error_messages', object: f.object %> <div class="field"> <%= f.text_area :comment, placeholder: "キャプションを入力..." %> </div> <%= f.submit "Post", class: "btn btn-primary" %> <span class="picture"> <%= f.file_field :picture, accept: 'image/jpeg,image/png' %> </span> <% end %> <script type="text/javascript"> $('#micropost_picture').bind('change', function() { var size_in_megabytes = this.files[0].size/1024/1024; if (size_in_megabytes > 5) { alert('Maximum file size is 5MB. Please choose a smaller file.'); } }); </script>
またコントローラーは次のように書いています。
class StaticPagesController < ApplicationController def home if logged_in? @post = current_user.posts.build @feed_items = current_user.feed.paginate(page: params[:page]) end end def help end end
@feed_itemsについてはuser.rbのモデルに書いているfeedメソッドを使っています
[/models/user.rb] class User < ApplicationRecord has_many :posts, dependent: :destroy has_many :active_relationships, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy has_many :passive_relationships, class_name: "Relationship", foreign_key: "followed_id", dependent: :destroy ・ ・ ・ # ユーザーのステータスフィードを返す def feed following_ids = "SELECT followed_id FROM relationships WHERE follower_id = :user_id" Post.where("user_id IN (#{following_ids}) OR user_id = :user_id", user_id: id) end end
基本的にRailsTutolialどおりに作業をしているのですが(違うとすればMicropostではなくPostになっているくらいです。)何か設定が不足しているのでしょうか…。
■すでにやったこと
renderメソッドの使い方を調べ、記載方法が誤っていないか確認しましたが、
解決しませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。