1

私はRuby on Railsを初めて使用し、サンプルのリンゴを作成しようとしましたが、この1つの部分でWEEKSに行き詰まりました! 私はstackoverflowをスパムしてきましたが、運がありませんでした:(。複数の画像をアップロードできる製品ページを作成しようとしています。したがって、ユーザーモデル、製品モデル、および写真モデルがあります。写真やその他の入力で満たされたフォームにこのエラーが表示されます。

NoMethodError in ProductsController#create

undefined method `photo' for #<Product:0x9078f74>

新商品ページ

= form_for @product, :html => {:multipart => true} do |f|
  %p
    = f.label :description
    = f.text_field :description

  = fields_for @photo, :html => {:multipart => true} do |fp|
    = fp.file_field :image 

  %p.button
    = f.submit

製品コントローラ

  def new
    @product = Product.new
    @photo   = Photo.new
  end

  def create
    @photo = current_user.photos.build(params[:photo])  
    @product = current_user.products.build(params[:product])
  end

製品モデル

attr_accessible :description, :name, :photo, :image

  belongs_to :user
  has_many :photos, dependent: :destroy
  accepts_nested_attributes_for :photos

  validates :user_id,      presence: true
  validates :description,  presence: true
  validates :photo,        presence: true
end

写真モデル

  attr_accessible :image
  belongs_to :product
  validates_attachment :image, presence: true

ユーザーモデル

attr_accessible :email, :name, :password, :password_confirmation, :image, :photo

  has_many :products, dependent: :destroy
  has_many :photos, :through => :products

end

テーブル

ユーザー

  • ID
  • 名前
  • Eメール
  • パスワード

製品

  • ID
  • 名前
  • 説明
  • ユーザーID

写真

  • ID
  • image_file_name
  • image_content_type
  • image_file_size
  • image_updated_at
  • 製品番号
4

3 に答える 3

1

製品モデルで


has_many :photos
accept_nested_attributes_for :photos
attr_accessible :description, :name, :photos_attributes

于 2013-06-04T09:32:44.200 に答える
1

変化する:

= fields_for @photo, :html => {:multipart => true} do |fp|

に:

= fields_for :photos, :html => {:multipart => true} do |fp|

そしてあなたのコントローラーで:

  def new
    @product = Product.new
    @product.photos.build
  end

そしてあなたの製品モデルで:

attr_accessible :description, :name, :photos_attributes
于 2013-05-30T03:55:48.123 に答える