0

昨日、友達からアーティスト ページにコメントを表示できないという問題がありました。この問題は解決しましたが、今は画像にコメントを表示するのに苦労しています。

現時点でやりたいことは、手動でデータベースに入力したコメントを表示し、画像の下に表示することだけです。

これは画像のモデルです:

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
4

1 に答える 1

1

昨日の質問では、投稿しImagesControllerましたが、showメソッドは@artist変数を設定しません。

ここでのスタック トレースは、@artist変数が nil であることを示しています。

ただし、モデルは画像に多くのアーティストを含めることができることを示しているため、ビューは論理的に次のように変更する必要があります。

<% @image.artists.each do |artist| %>
  <p>
    <b>First name:</b>
    <%= artist.first_name %>
  </p>
<% end %>
于 2012-05-05T16:10:51.760 に答える