蜻蜓 rails 4 image_tag 错误

dragonfly rails 4 image_tag error

我正在 Rails 4.1.6 和 Ruby 2.0.0p576 中构建我的摄影作品集。

我有 'collections',其中有很多 'photos'。

我正在使用蜻蜓 1.0.10 进行图片上传。

Collections 型号

    class Collection < ActiveRecord::Base
      belongs_to :admin
      has_many :photos
    end

模特照片

   class Photo < ActiveRecord::Base
    belongs_to :collection
    extend Dragonfly::Model
    dragonfly_accessor :image
   end

Collection 控制器

class CollectionsController < ApplicationController
 respond_to :html, :xml, :json

 def index
  @collections = Collection.all
 end

 def new
  @collection = Collection.new
  respond_with (@collection)
end

 def create
  @collection = Collection.new(collection_params)
  @collection.save
  respond_with (@collection)
 end

 def edit
  @collection = Collection.find(params[:id])
 end

 def update
  @collection = Collection.find(params[:id])

  if @collection.update(collection_params)
   redirect_to @collection
  else 
   render 'edit'
  end    
 end

 def show
  @collection = Collection.find(params[:id])
 end

 def destroy
  @collection = Collection.find(params[:id])
  @collection.destroy
  respond_with (@collection)
 end

 private
  def collection_params
   params.require(:collection).permit(:name, :desc, photos: [:image] )
  end

end

照片控制器

    class PhotosController < ApplicationController

     def new
      @collection = Collection.find(params[:id])
      @photo = @collection.new
     end

     def create
      @collection = Collection.find(params[:collection_id])
      @photo = @collection.photos.create(photo_params)
      redirect_to collection_path(@collection)
     end

     private
      def photo_params
       params.require(:photo).permit(:image)
      end

   end

这正确地为我存储了我的照片。

但是在我的 collection 显示页面上,我在 Collections#show undefined method `image' 中收到“NoMethodError”。

在终端中,我收到以下错误: ActionView::Template::Error(# 的未定义方法“图像”):

展示页面代码如下:

collections/show.html.erb

    <h1><%= @collection.name %></h1>

    <p><%= @collection.desc %></p>

    <% @collection.photos.each do |photo| %>
     <div>
      <%= image_tag @collection.photos.image.thumb('400x300#').url %>
     </div>
    <% end %>  

我是绝对的 rails n00b,需要一些帮助来解决这个问题并能够在其展示页面上查看 collection 的所有照片。

请帮忙!

您对 each 循环的用法有误:

<% @collection.photos.each do |photo| %>
   <div>
     <%= image_tag photo.image.thumb('400x300#').url %>
   </div>
 <% end %>  

Read How does iteration work in Ruby?