0

Wie zeige ich das hochgeladene Bild (assoziiert) an, wenn ich das Formular bearbeite? Ich habe versucht, wie so anzuzeigen:Rails 4: Zeige hochgeladenes Bild beim Editieren des Formulars - undefinierte lokale Variable oder Methode

_item_fields.haml

.nested-fields 

    = image_tag f.img.url if f.img.url? 
    = f.input :item 

    = f.file_field :img 

    = link_to_remove_association "remove item", f 

Wo es angezeigt werden soll, wenn ein .url, aber ich bekomme diese Fehlermeldung:

undefined local variable or method 'img' #<SimpleForm::FormBuilder:0x007ff0eff8aee8> 

_form.haml

= simple_form_for @model, html: {multipart: true} do |f| 
    = f.simple_fields_for :items do |m| 

    = render 'item_fields', f: m 

    = link_to_add_association 'add item', f, :items 
    = f.button :submit 

In meinem show.haml, ich habe diese

- @model.items.each do |m| 
    - if m.img 
    = image_tag m.img.url 
    - else 
    no image 

das richtig das Bild zeigt.

+0

Wenn Sie 'f' in _iten_fields.haml untersuchen, was bekommen Sie? –

+0

Wie lautet der Attributname, den Sie im Artikelmodell zum Speichern der Bilder erhalten haben? – Pavan

+0

@paven, ich habe meinen Post aktualisiert, die Show-Seite zeigt das Bild korrekt. Aber es zeigt einfach nicht das Bild, wenn ich es im Bearbeitungsformular habe, ich speichere es in img. Ist es das, was du fragst? Tut mir leid, wenn nicht, ich versuche, auf meinen Schienen aufzupäppeln. – hellomello

Antwort

1

Ich finde das funktioniert: Im Inneren der Form Verwendung f.object bekommen die Aufgabe zugrunde, die korrekte URL für den image_tag

image_tag f.object.img.url 

Ich würde schreiben einen Verweis zu bauen, aber es ist nicht gut dokumentiert. Es gibt ein bisschen eine Diskussion here.

+0

das funktionierte. Vielen Dank! – hellomello

+0

Großartig! Bitte. – Elvn