###Rails Tutorial 第11章 フィードの原型で出たエラー:undefined method `any?' for nil:NilClass を解決したいです。
環境:Ruby on Rails4.2(第3版)
Rails Tutorialの第11章を進めており11.3.2 「マイクロポストを作成する」までは問題なく進んだのですが「11.3.3 フィードの原型」でエラーが出て行き詰まっています。
###NoMethodError in StaticPagesController#homeというエラーが表示される
undefined method `any?' for nil:NilClass
###該当のソースコード
フィードの原型で実行したコードは以下の通りです。
リスト11.44: マイクロポストのステータスフィードを実装するための準備
app/models/user.rb
class User < ActiveRecord::Base . . . # 試作feedの定義 # 完全な実装は第12章「ユーザーをフォローする」を参照してください。 def feed Micropost.where("user_id = ?", id) end private . . . end
リスト11.45: homeアクションにフィードのインスタンス変数を追加する
app/controllers/static_pages_controller.rb
class StaticPagesController < ApplicationController def home if logged_in? @micropost = current_user.microposts.build @feed_items = current_user.feed.paginate(page: params[:page]) end end def help end def about end def contact end end
リスト11.46: ステータスフィードのパーシャル
app/views/shared/_feed.html.erb
<ol class="microposts"> <%= render @feed_items %> </ol> <%= will_paginate @feed_items %> <% end %>
リスト11.47: Homeページにステータスフィードを追加する
app/views/static_pages/home.html.erb
1<% if logged_in? %> 2 <div class="row"> 3 <aside class="col-md-4"> 4 <section class="user_info"> 5 <%= render 'shared/user_info' %> 6 </section> 7 <section class="micropost_form"> 8 <%= render 'shared/micropost_form' %> 9 </section> 10 </aside> 11 <div class="col-md-8"> 12 <h3>Micropost Feed</h3> 13 <%= render 'shared/feed' %> 14 </div> 15 </div> 16<% else %> 17 . 18 . 19 . 20<% end %>
###試したこと
stackoverflowにバージョンは違いますが、同じようなエラーが出ている人がいました。http://stackoverflow.com/questions/17155942/ch-10-3-3-ruby-on-rails-tutorial-undefined-method-any
ここの回答をもとに
_feed.html.erbの1行目を
<% if @feed_items.any? %> <ol class="microposts"> <%= render @feed_items %> </ol> <%= will_paginate @feed_items %> <% end %>
ではなく、
<% if @feed_items.try(:any?) %> <ol class="microposts"> <%= render @feed_items %> </ol> <%= will_paginate @feed_items %> <% end %>
とすると
エラーメッセージは出なくなりますが、Micropost Feedの文字が出るだけになってしまいます。
Tutorialの通りになればこのようになるはずなのですが。。。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。