Ich versuche, das HTML5-Mehrfachattribut für ein Dateifeld in einer verschachtelten Form zu verwenden.Wie wird das HTML5-Feld zum Hochladen mehrerer Dateien einem verschachtelten Modell in Rails 3 zugeordnet?
Die Modelle sind wie folgt:
class Album < ActiveRecord::Base
has_many :album_images
has_many :images, :through => :album_images
accepts_nested_attributes_for :images
end
class Image < ActiveRecord::Base
has_many :album_images
has_many :albums, :through => :album_images
mount_uploader :filename, ImageUploader
validates_presence_of :filename
end
Aussicht:
<%= semantic_form_for @album, :url => upload_path do |f| %>
<%= f.inputs do %>
<%= f.input :name, :label => 'Album title' %>
<% end %>
<%= f.input :images, :as => :file, :input_html => {:multiple => true} %>
<%= f.buttons do %>
<%= f.commit_button 'Upload' %>
<% end %>
<% end %>
Wenn ich für das Feld Datei:
<%= f.input :images, :as => :file, :input_html => {:multiple => true} %>
ich:
<input id="album_images" multiple="multiple" name="album[images][]" type="file">
Das scheint nicht richtig seit Ich denke, Ich möchte den Dateinamen direkt auf das Objekt, aber ich bin mir nicht sicher. Wenn ich versuche, mit diesem Bereich zu laden, die eingehenden params wie folgt aussehen:
"album"=>{"name"=>"2011-01-09", "images"=>["IMG_0052.JPG", "IMG_0053.JPG", "IMG_0054.JPG", "IMG_0055.JPG"]}
Allerdings habe ich die folgende Fehlermeldung erhalten:
ActiveRecord::AssociationTypeMismatch (Image(#2157004660) expected, got String(#2151988680)):
OK, ist dieser Fehler wahrscheinlich aufgrund der Tatsache, dass es nur erhielt einen Dateinamen und kein Bildobjekt. Anstatt also verwende ich für das Dateifeld:
<%= f.input :images, :as => :file, :input_html => {:multiple => true, :name => 'album[images][][filename]'} %>
für die Formtastic erzeugt:
<input id="album_images" multiple="multiple" name="album[images][][filename]" type="file">
Die eingehenden params wie folgt aussehen:
"album"=>{"name"=>"2011-01-09", "images"=>[{"filename"=>"IMG_0052.JPG"}, {"filename"=>"IMG_0053.JPG"}, {"filename"=>"IMG_0055.JPG"}]}
Aber dann bekomme ich diesen Fehler:
Image(#2153868680) expected, got ActiveSupport::HashWithIndifferentAccess(#2158892780)
So wie Doe S one gehen über die Einrichtung dieser mehrere Datei Eingabefeld Mapping in Rails?
Danke.
Downvoted, weil Sie nie eine Antwort auf die Antwort unten gegeben haben und nie zurück kamen, um Ihre Frage zu aktualisieren, wenn Sie es nicht gelöst hatten/hatten. –