rails循环链接记录

时间:2013-06-28 22:38:39

标签: ruby-on-rails

经过许多铁道教程后,这是我的第一个个人项目

我有两个模型,一个控制顶级记录(lesson.rb),另一个通过carrierWave(attachment.rb)控制相关图像。我正试图遍历链接的图像并用帖子显示它们。

到目前为止,我的资产创建工作正在进行,但我很难弄清楚如何在show.html.erb中显示连接的图像。请原谅我,如果答案很容易愚蠢,我已经广泛搜索了这篇文章,虽然我发现了许多结果,但我仍然很难将这些方法应用到我的项目中。

提前感谢您的帮助。

/models/lesson.rb

class Lesson < ActiveRecord::Base
  attr_accessible :content, :title, :attachments_attributes

  has_many :attachments, :dependent => :destroy


  accepts_nested_attributes_for :attachments

  validates :title, :content, :presence => true
  validates :title, :uniqueness => true

end

/models/attachment.rb

class Attachment < ActiveRecord::Base
  attr_accessible :image
  belongs_to :lesson
  mount_uploader :image, ImageUploader
end

/controllers/lessons.rb(显示方法)

  def show
    @lesson = Lesson.find(params[:id])
  end

/views/lessons/show.html.erb

<div class="body sixteen columns">
    <h2><%= @lesson.title %></h2>

    <div class="sixteen columns images">
        <% for image in @lesson.attachment %>
            <%= image_tag @lesson.attachment.image_url.to_s %>
        <% end %>
    </div>

    <p><%= simple_format(@lesson.content) %></p>
</div>

1 个答案:

答案 0 :(得分:0)

两件事:使用each来迭代附件,并将attachments称为复数而不是单数。

<% @lesson.attachments.each do |attachment| %>
  <%= image_tag attachment.image_url.to_s %>
<% end>

另一件好事是:

@lesson = Lesson.includes(:attachments).find(params[:id])

如果在从数据库中检索课程时使用includes,它将仅触发一个SQL SELECT查询而不是一个+该课程中的附件数量。有关详细信息,请参阅http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations