在图像上显示评论

时间:2012-05-05 15:27:11

标签: ruby-on-rails ruby

所以yesterday我遇到了一个问题,我无法在朋友的艺术家页面上显示评论,我已设法解决此问题,但现在我很难在我的图片上显示评论。

目前我想做的只是显示我已手动输入到数据库中的注释,并将其显示在我的图像下方。

这是图像的模型:

class Image < ActiveRecord::Base
  has_many :publishings
  has_many :artists, :through => :publishings
  has_many :comments,:through => :friends
  has_many :comments, :as => :resource, :class_name => "Commentable"
end

这是图像的show.html

<p id="notice"><%= notice %></p>
<div id="container">
  <p>
    <b>Title:</b>
    <%= @image.title %>
  </p>

  <p>
    <b>Filename:</b>
    <%= @image.filename %>
    <%= image_tag @image.filename %>
  </p>

  <p>
    <b>Likes:</b>
    <span id="images_<$=@image.id%>_likes_count"><%= @image.likes %></span>
  </p>
  <div id="comments">
    <h2>Comments</h2> 
    <%= render :partial => "shared/comment", :collection => @image.comments%>
  </div>
</div>

<%= link_to 'Like', like_image_path(@image), :method => :post %> |
<%= link_to 'Edit', edit_image_path(@image) %> |
<%= link_to 'Back', images_path %>

这是我目前收到的错误:

> undefined method `first_name' for nil:NilClass

    Extracted source (around line #16):

13: </p>
14: <p>
15:   <b>First name:</b>
16:   <%= @artist.first_name %>
17: </p>
18: 
19: <p>

应用程序跟踪

app/views/images/show.html.erb:16:in `_app_views_images_show_html_erb___1549892128_70077336775360_0'
app/controllers/images_controller.rb:18:in `show'

这是朋友的模型,它显示正确的方法:

class Friend < ActiveRecord::Base
  has_many:friends
  has_many :artists, :through => :publishings

  def display_name
    "#{self.first_name} #{self.second_name}"
  end
end

1 个答案:

答案 0 :(得分:1)

在昨天的问题中,您发布了ImagesController,但show方法从未设置@artist变量。

此处的堆栈跟踪表明@artist变量为零。

但是,由于您的模型表明图片可以包含许多艺术家,因此您的视图应该在逻辑上更改为:

<% @image.artists.each do |artist| %>
  <p>
    <b>First name:</b>
    <%= artist.first_name %>
  </p>
<% end %>