Ruby on rails rails 3渲染错误div_for?
我正在从事Rails3项目,并试图在用户配置文件页面上呈现一个部分。渲染可以很好地用于除照片以外的所有对象。当我试图访问一个用户配置文件页面时,我得到以下错误 NilClass:Class的未定义方法model_name'` 用户show.html.erbRuby 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
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添加到我的收藏后,部分事情开始起作用