1

Rails 3 プロジェクトで作業しており、ユーザー プロファイル ページでパーシャルをレンダリングしようとしています。レンダリングは、写真以外のすべてに対して正常に機能します。ユーザー プロファイル ページにアクセスしようとすると、次のエラーが表示されます

undefined methodNilClass:Class` の model_name'

ユーザー show.html.erb

def show
  @user= User.find(params[:id])
  @photo = Photo.find_by_id(params[:id])
end

プロファイルで show.html.erb

<%= content_tag :h2, "My photos" %>
<% photo = @user.photos %>
<% if photo.blank? %>
  <%= link_to 'Create photo', new_photo_path %>
<% else %>
  <%= render :partial => 'photos/photo', :locals => {:photo => @photo} %>
<% end %>

これがレンダリングされているパーシャルです

<%= div_for photo do %>
 <table>
   <tr>
     <th>Title</th>
     <th>Date</th>
     <th>Extra</th>
   </tr>

   <tr>
     <td><%= photo.title %></td>
     <td><%= photo.date %></td>
     <td><%= photo.extra %></td>
     <td><%= link_to 'View photos', photo %></td>
   </tr>
 </table>
<% end %>

このエラーを取り除く方法についてのアイデアや提案はありますか? 前もって感謝します

4

3 に答える 3

1

データベースにこのIDの写真はありません@photo = Photo.find_by_id(params[:id])

nilしたがって、オブジェクトを部分的に送信します。すべてのユーザーの写真を表示したい場合は、これを試してください。

<%= content_tag :h2, "My photos" %>
<% photos = @user.photos %>
  <% if photos.empty? %>
    <%= link_to 'Create photo', new_photo_path %>
  <% else %>
    <% photos.each do |photo| %>
      <%= render :partial => 'photos/photo', :locals => {:photo => photo} %>
    <% end %>
<% end %>
于 2012-05-15T21:53:51.750 に答える
1

inが nullであるため:locals => {:photo => @photo}、エラーがスローされます@photo

@user.photos単一の画像ではなく、リストを送信していることに注意してください。

ここで@photo = Photo.find_by_id(params[:id])は、id、photo_id で写真を取得しています。ユーザーの写真を見つけたいと思います

@photos = @user.photos 

#for only one photo, also you need to make sure its not null
@photo = @user.photos.first
于 2012-05-15T21:38:44.983 に答える