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。我正在使用carrierwave gem 上传图像文件。文件已上传,但我不知道在我看来访问它们的正确方法是什么。我收到如下错误消息: []: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 回答