3

我有一个带有很多照片的产品。关系是这样的:

产品.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 关联,并将其声明为视图中的单个文件输入。许多或一个,任你选择:)

您可能想要做的是在您的产品表单中将照片作为嵌套模型 - 如下所示:

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

遍历产品中的每张照片,并为每张照片显示一个文件输入字段。

于 2012-10-30T13:41:59.050 回答