Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 3渲染错误div_for?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails rails 3渲染错误div_for?

Ruby on rails rails 3渲染错误div_for?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在从事Rails3项目,并试图在用户配置文件页面上呈现一个部分。渲染可以很好地用于除照片以外的所有对象。当我试图访问一个用户配置文件页面时,我得到以下错误 NilClass:Class的未定义方法model_name'` 用户show.html.erb def show @user= User.find(params[:id]) @photo = Photo.find_by_id(params[:id]) end <%= content_tag :h2, "My photos

我正在从事Rails3项目,并试图在用户配置文件页面上呈现一个部分。渲染可以很好地用于除照片以外的所有对象。当我试图访问一个用户配置文件页面时,我得到以下错误

NilClass:Class的未定义方法model_name'`

用户show.html.erb

def show
  @user= User.find(params[:id])
  @photo = Photo.find_by_id(params[:id])
end
<%= 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 %>
在profile show.html.erb中

def show
  @user= User.find(params[:id])
  @photo = Photo.find_by_id(params[:id])
end
<%= 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 %>

'photos/photo',:locals=>{:photo=>@photo}%>
下面是它正在渲染的部分

<%= 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 %>

标题
日期
额外的

关于如何消除这个错误,有什么想法或建议吗?提前感谢

引发错误,因为在
: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

数据库
@photo=photo中没有具有此id的照片。按\u id查找\u(参数[:id])

因此,将
nil
对象发送到partial。如果要显示所有用户照片,请尝试此操作

<%= 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 %>

'photos/photo',:locals=>{:photo=>photo}%>

使用note的div_时为nil,因此我会尝试通过迭代代码访问它,就像我在下面所做的那样。那么现在应该可以访问照片了

<% @photos.each do |photo| %>
  <%= div_for photo do %>
    Code here
  <% end %>
<% end %>

代码在这里

我认为
photo
变量的单数和复数形式以及它们的实例和局部类型有点混乱。很难理解,你到底想做什么。但我可以说,最有可能的错误原因是
中的nil photo变量。谢谢,出于某种原因,当在rails控制台中检查时,一张照片为nil,但在将@user.photos添加到我的收藏后,部分事情开始起作用