###前提・実現したいこと
下記のRails チュートリアルで作成したものをベースに
RailsでTwitterのようなテキスト/画像投稿のWEBサービスを開発中です。
マイクロポスト(投稿)の一覧をサービスのランディングページで表示したいのですが、
タイトルのエラーが発生しておりなかなか解決できずに困っています。
Rails 4.2.2
Ruby 2.0.0
で開発をしています。
###発生している問題・エラーメッセージ
マイクロポスト(投稿)の一覧を表示する
サービスのランディングページにアクセスすると、
下記のエラーメッセージがブラウザで表示されます。
エラーメッセージ
ArgumentError in StaticPagesController#landing 'nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.
vivaldiブラウザで、以下のスクショのエラー画面が表示されます。
###該当のソースコード
ブラウザで指摘されているエラー箇所の
app/views/static_pages/landing.html.erb:23:
のコードが下記です。
html
1 <% render @microposts %>
html全体のコードは下記のようになっています。
controllerで定義した@micropostsオブジェクトをランディングページで表示しようとしています。
(class="microposts"でマイクロポストの一覧を表示しようとしています。)
ファイルは下記に配置しています。
~/sample_app/app/views/static_pages/landing.html.erb
html
1<!-- landing.jsファイルを読み込み --> 2<%= stylesheet_link_tag "landing.js" %> 3 4<body style="padding-top: 0px;"> 5 6<div class="img-responsive top-image jumbotron" style="background-color: #F9F9F9;"> 7 <h1 style="color: white; font-family: 'Helvetica Neue'; font-weight: 100; letter-spacing: 0.5px; font-size: 600%; margin-top: 120px;"> 8 Lavz 9 </h1> 10 <h2 style="color: white; font-family: 'Helvetica Neue'; font-weight: 100; letter-spacing: 0.5px; font-size: 250%;"> 11 Share and Manage Protocols<br>in Biological Experiments 12 </h2> 13</div> 14 15<div class="container"> 16 <div class="buttons" style="text-align: center;"> 17 <%= link_to "Sign up", signup_path, class: "btn-lg btn-primary" %> 18 <%= link_to "log in", login_path, class: "btn-lg btn-default" %> 19 </div> 20</div> 21 22<ul class="microposts"> 23 <% render @microposts %> 24</ul> 25 26</body> 27 28<!-- landing.jsファイルを読み込み --> 29<%= stylesheet_link_tag "landing.js" %>
また、マイクロポスト(投稿)の一覧を定義するためにcontrollerのコードを以下のようにしています。
ファイルは下記に配置しています。
~/sample_app/app/controllers/static_pages_controller.rb
ruby
1class StaticPagesController < ApplicationController 2 3 def index 4 render :layout => 'landing' 5 @microposts = Micropost.paginate(page: params[:page]) 6 end 7....
ご参考までに、micropostのパーシャルは下記のようになっています。
(マイクロポストの一覧を表示するためのコードなどは書いていません。
パーシャルの理解が浅いので、ここに何かしら実装が必要なのかも、、
と思っています)
ファイルの配置場所は下記です。
~/sample_app/app/views/microposts/_micropost.html.erb
<li id="micropost-<%= micropost.id %>"> <%= link_to gravatar_for(micropost.user, size: 50), micropost.user %> <span class="user"><%= link_to micropost.user.name, micropost.user %></span> <span class="content"> <%= micropost.content %> <%= image_tag micropost.picture.url if micropost.picture? %> </span> <span class="timestamp"> Posted <%= time_ago_in_words(micropost.created_at) %> ago. <% if current_user?(micropost.user) %> <% link_to "delete", micropost, method: :delete, data: { comfirm: "You sure?" } %> <% end %> </span> </li>
追加情報など必要であればコメントいただけると大変助かります!
###試したこと
近しいエラーの質問がされていた、下記のstack over flowを参考に
オブジェクトの指定方法を
@micropostsから@user.micropostsにしてみましたが、
エラーも解消せず、そもそもユーザーに紐づくマイクロポストを表示したいわけではないので
元にもどしました。
###補足情報
Ruby on Rialsチュートリアルというサイトで作成したサービスをもとに
作ったサービスを、アップデートしているところです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/13 14:05