Tôi đang cố gắng sử dụng thuộc tính nhiều HTML5 trên một trường tệp trong một biểu mẫu lồng nhau.Trường tải lên nhiều tệp HTML5 ánh xạ tới một mô hình lồng nhau trong Rails 3 như thế nào?
Các mô hình như sau:
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
Quan điểm:
<%= 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 %>
Khi tôi sử dụng cho lĩnh vực file:
<%= f.input :images, :as => :file, :input_html => {:multiple => true} %>
tôi nhận được:
<input id="album_images" multiple="multiple" name="album[images][]" type="file">
Điều không có vẻ không đúng kể từ Tôi nghĩ rằng Tôi muốn đặt tên tệp trực tiếp trên đối tượng, nhưng tôi không chắc chắn về điều này. Khi tôi cố gắng để tải lên với lĩnh vực này, các params đến trông giống như:
"album"=>{"name"=>"2011-01-09", "images"=>["IMG_0052.JPG", "IMG_0053.JPG", "IMG_0054.JPG", "IMG_0055.JPG"]}
Tuy nhiên, tôi nhận được lỗi sau:
ActiveRecord::AssociationTypeMismatch (Image(#2157004660) expected, got String(#2151988680)):
OK, lỗi đó có lẽ là do thực tế rằng nó chỉ đã nhận được một tên tập tin và không phải là một đối tượng hình ảnh. Vì vậy, thay vào đó, tôi sử dụng cho lĩnh vực file:
<%= f.input :images, :as => :file, :input_html => {:multiple => true, :name => 'album[images][][filename]'} %>
mà Formtastic tạo:
<input id="album_images" multiple="multiple" name="album[images][][filename]" type="file">
Các params đến trông giống như:
"album"=>{"name"=>"2011-01-09", "images"=>[{"filename"=>"IMG_0052.JPG"}, {"filename"=>"IMG_0053.JPG"}, {"filename"=>"IMG_0055.JPG"}]}
Nhưng sau đó tôi nhận được lỗi này:
Image(#2153868680) expected, got ActiveSupport::HashWithIndifferentAccess(#2158892780)
Vậy hãy làm thế nào một trong những đi về thiết lập này nhiều tập tin đầu vào nộp bản đồ trong Rails?
Cảm ơn.
Bị bỏ phiếu vì bạn chưa bao giờ cung cấp bất kỳ phản hồi nào cho câu trả lời bên dưới và không bao giờ quay lại để cập nhật câu hỏi của bạn nếu bạn đã/chưa giải quyết. –