0

多くの Rails チュートリアルに取り組んだ後、これは私の最初のソロ プロジェクトです。

私は 2 つのモデルを持っています。1 つは最上位レコード (lesson.rb) を制御し、もう 1 つは 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>
4

1 に答える 1

0

2 つのこと:each添付ファイルを反復処理するために使用しattachments、単数ではなく複数として参照します。

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

もう1つの良いことは次のとおりです。

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

データベースからレッスンを取得するときにを使用includesすると、1 + そのレッスンの添付ファイルの数ではなく、1 つの SQL SELECT クエリのみが起動されます。詳細については、http: //guides.rubyonrails.org/active_record_querying.html#eager-loading-associationsを参照してください。

于 2013-06-28T22:45:29.243 に答える