0

ユーザーモデルから取得したデータを表示する_userboxという名前の部分があります。また、画像に関する情報を格納する別の画像モデルもあります。

class User
  ...
  has_many :images, :dependent => :destroy  
  accepts_nested_attributes_for :images, allow_destroy: true    
  ...
end

class Image
  ...
  attr_accessible :image_priority, :image_title, :image_location
  belongs_to :user
  mount_uploader :image_location, ProfilePictureUploader
  ...
end

_userbox.html.erb
    <% @users.each do |user| %>     
      <tr>
        <td><%= image_tag user.images.image_location.url.to_s %></td>
        <td valign="top">
          <p><%= link_to user.first_name, user_path(user) %></p>
          <p><%= age(user.date_of_birth) %> / <%= user.gender %> / <%= user.orientation %></p>
          <p>from <%= user.location %></p>
          <p>Question? Answer answer answer answer answer answer answer</p>
        </td>
      </tr>
    <% end %>

image_tagを除いて、正常に動作します。私はcarrierwavegemを使用して画像ファイルをアップロードしています。ファイルはアップロードされますが、私の見解ではそれらにアクセスするための適切な方法がわかりません。次のようなエラーメッセージが表示されます:[]:ActiveRecord::Relationの未定義のメソッド`image_location'

そのimage_tagを使用する適切な方法は何ですか?

4

1 に答える 1

2

あなたが持っているhas_many :imagesのでuser.images、単一のImageインスタンスではなく関係です。パーシャルで何かを表示するには、最初の画像を表示するか、それらをループします。

<% @users.each do |user| %>     
  <tr>
    <td><%= image_tag user.images.first.image_location.url.to_s %></td>
    <td valign="top">... 
    </td>
  </tr>
<% end %>

またはそれらをループします:

<% @users.each do |user| %>     
  <tr>
    <td>
      <% user.images.each do |img| %>
        <%= image_tag img.image_location.url.to_s %>
      <% end %>
    </td>
    <td valign="top">... 
    </td>
  </tr>
<% end %>
于 2012-10-23T01:22:44.473 に答える