2016-07-15 9 views
0

Das ist mein Post Controller erstellen Aktion:nicht definierte Methode `url‘ für # <Activerecord :: Verbände :: 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 

privat:

def

params post_params. require (: post) .permit ( : titel,: beschreibung,: größe, images_attributes [: id,: bild,: bildbare_id,: darstellbarer_typ])

end

Ende

Dies ist show.html.erb:

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

Dies ist Post Modell:

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

Dies ist Image Modell:

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

Antwort

0

<%= image_tag @post.images %> gibt ein collections of images zum @post

zu machen die Bilder von Post tun dies gehört:

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

Bild erzeugt wird nicht angezeigt. – fahad

1

Es sieht aus wie Sie Carrierwave verwenden und haben es auf dem eingehängten image Attribut des Bild Modell. so etwas wie dies Deshalb wird wahrscheinlich arbeiten:

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

Sie können ersetzen :original mit dem, was Versionen Ihrer carrierwave Uploader Datei

+0

Wie überprüft man, welche Version carrierwave Datei erstellt? – fahad

+0

Carrierwave erstellt standardmäßig eine Version mit dem Namen: original, so dass der obige Code funktionieren sollte. Sie können herausfinden, welche anderen Versionen Carrierwave erstellt, indem Sie in "app/uploaders/image_uploader.rb" klicken. – stephenmurdoch

+0

In meinem image_uploader ist die Version thumb .i ersetze es mit: Original aber Bild wird nicht angezeigt '<% = image_tag image.image_url (: thumb)%>' – fahad