我有一个模型产品,我希望能够添加多张照片。所以我得到了回形针宝石,因为我想要多张照片,我制作了另一张名为Photos的桌子,与我的产品型号有一对多的关系。通过这种方式,我可以在照片表中分配多个记录,每个记录都有一个回形针附件,每个记录都引用一个产品。
但我似乎无法使我的上传图像功能起作用,甚至没有任何东西保存到数据库中。我编辑它时,每个其他字段都会更新,但没有任何内容保存到照片表中。我错过了什么?相关代码如下:
模型
class Product < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :product
has_attached_file :image
end
产品控制器
def index
@products = Product.all
@product = Product.new
end
def update
@product = Product.find(params[:id])
if @product.update_attributes(product_params)
respond_to do |format|
format.js
format.html { redirect_to products_url }
end
else
respond_to do |format|
format.js
#format.html { render action : "edit" }
end
end
end
查看
<% for product in @products %>
<%= simple_form_for product, :html => { :method => 'put', :multipart => true} do |f| %>
<%= token_tag form_authenticity_token %>
<div class="row">
<div class="large-12 columns">
<%= product.photos.each do |photo| %>
<%= image_tag photo.image.url %>
<% end %>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<%= f.input :name, :input_html => {:value => product.name} %>
</div>
</div>
<div class="row">
<div class="large-6 columns">
<%= f.association :category, :selected => product.category.id %>
</div>
<div class="large-6 columns">
<%= f.input :price, :input_html => {:value => product.price}%>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<%= f.input :short_description, :input_html => {:value => product.short_description} %>
</div>
</div>
<div class="row">
<div class="large-6 columns">
<%= fields_for :photos do |f_i| %>
<%= f_i.file_field :image %>
<% end %>
</div>
<div class="large-6 columns">
<%= f.button :submit %>
</div>
</div>
<% end %>
<% end %>
答案 0 :(得分:0)
您只需在产品型号中添加此行。
accepts_nested_attributes_for :photos
这将有效。
答案 1 :(得分:0)
我明白了。我有几件事情错了(现在都纠正了,而且工作正常.IIRC这些是我遇到的主要问题:
认为那是主要的东西。谢谢你的帮助。