2016-07-15 86 views
0

这是我Post控制器创建动作:未定义的方法`URL” <ActiveRecord的::协会:: CollectionProxy []>

def create 
    @user = current_user 
    @post = @user.posts.create(post_params) 

    respond_to do |format| 
    if @post.save 
     format.html { redirect_to @post, notice: 'Post was successfully created.' } 
     format.json { render :show, status: :created, location: @post } 
    else 
     format.html { render :new } 
     format.json { render json: @post.errors, status: :unprocessable_entity } 
    end 
    end 

私人:

DEF post_params

PARAMS。要求(:post).permit( :title,:description,:size,images_attributes [:id,:image,:imageable_id,:imageable_type])

end

这是show.html.erb

(<%= image_tag @post.images.url %>) 

这是Post模型:

class Post < ActiveRecord::Base 
    belongs_to :user 
    has_many :images, as: :imageable 
    accepts_nested_attributes_for :images 
end 

这是Image模型:

class Image < ActiveRecord::Base 
    belongs_to :imageable, polymorphic: true 
    mount_uploader :image, ImageUploader 
end 

回答

0

<%= image_tag @post.images %>给出了collections of images属于@post

要渲染后的图像做:

<% @post.images.each do |img| %> 
    <%= image_tag img.url %> 
<% end %> 
+0

图像不显示更换:original。 – fahad

1

它看起来像你使用Carrierwave并安装它的形象的image属性模型。因此,这样的事情都会很成功:

<% @post.images.each do |image| %> 
    <%= image_tag image.image_url(:original) %> 
<% end %> 

你可以与任何版本的carrierwave上传文件创建

+0

如何检查哪个版本carrierwave文件创建? – fahad

+0

默认Carrierwave会创建一个名为版本:原来如此,上面的代码应该工作的是,你可以找出哪些其他版本Carrierwave创建通过看里面'应​​用程序/上传在我image_uploader/image_uploader.rb' – stephenmurdoch

+0

版本是拇指.I其替换为:原始图像,但不显示“<%= IMAGE_TAG image.image_url(:拇指)%>” – fahad

相关问题