蜻蜓 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 %>
我正在 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 %>