3

私は多くの写真を含む製品を持っています。関係は次のようになります。

product.rb

class Product < ActiveRecord::Base
  has_many :photos, :dependent => :destroy
  attr_accessible :translations_attributes, :active, :category_id, :photos
  accepts_nested_attributes_for :translations, :photos

写真.rb

class Photo < ActiveRecord::Base
  attr_accessible :photo, :product_id
  belongs_to :attachable
  mount_uploader :photo, PhotoUploader

フォームは次のようになります。

form(:html => { :multipart => true }) do |f|
f.inputs "Details" do
  f.input :active
  f.input :category, :include_blank => false
end

f.inputs "Photos" do
    f.input :photos, :as => :file
end

f.buttons

終わり

問題は、ファイルが添付された製品を作成/更新するときに、次のエラーが発生することです。

undefined method `each' for #<ActionDispatch::Http::UploadedFile:0x007f93c8549828>

ここで同じエラーの質問を見つけましたが、解決策を試しても同じ問題があります。

私は Friendly_Id 、 ActiveAdmin 、 Globalize3 を使用しています。おそらくそれらと何らかの関係がある可能性があります。これは Rails を使用した最初のプロジェクトであり、今のところ何ができるかわかりません...

4

1 に答える 1

2

あなたの問題はphotos、モデルで has_many アソシエーションとして宣言し、それをビューで単一のファイル入力として宣言していることです。多くまたは1つ、あなたの選択をしてください:)

おそらくあなたがしようとしているのは、製品フォームにネストされたモデルとして写真を入れることです-次のようなものです:

semantic_form_for @product do |f|
  f.semantic_fields_for :photos do |ff|
    ff.input :photo, as: :file

製品内の各写真をループし、それぞれのファイル入力フィールドを表示します。

于 2012-10-30T13:41:59.050 に答える