2016-07-15 52 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

相關問題