我试图在rails中创建一个创建产品页面。这包括添加多个图像和文本字段。我有一个产品型号和一个照片。我使用回形针宝石进行照片上传。但是当我尝试创建新产品时,我收到此错误。附:我使用HAML。
Showing /some_app/app/views/products/new.html.haml where line #33 raised:
undefined method `photo' for :product:Symbol
Extracted source (around line #33):
33: = f.file_field :product.photo, multiple: 'multiple'
产品/ new.html.haml
%h1
create item
= form_for @product, :html => { :multipart => true } do |f|
- if @product.errors.any?
.error_messages
%h2 Form is invalid
%ul
- for message in @product.errors.full_messages
%li
= message
%p
= f.label :name
= f.text_field :name
%p
= f.file_field :product.photo, multiple: 'multiple'
%p.button
产品控制器
class ProductsController < ApplicationController
def new
@product = Product.new
@photo = Photo.new
end
def create
@photo = current_user.photos.build(params[:photo])
5.times { @product.photos.build }
@product = current_user.products.build(params[:product])
if @product.save
render "show", :notice => "Sale created!"
else
render "new", :notice => "Somehting went wrong!"
end
end
产品型号
class Product < ActiveRecord::Base
attr_accessible :description, :name, :price, :condition, :ship_method, :ship_price, :quantity, :photo
has_attached_file :photo
belongs_to :user
validates :user_id, presence: true
validates :name, presence: true, length: { minimum: 5 }
end
照片模型
class Photo < ActiveRecord::Base
attr_accessible :product_id
belongs_to :product
has_attached_file :image,
:styles => {
:thumb=> "100x100#",
:small => "300x300>",
:large => "600x600>"
}
end
答案 0 :(得分:4)
语法不正确 - 更改:
= f.file_field :product.photo, multiple: 'multiple'
要:
= f.file_field :photo, multiple: 'multiple'