我有一个 Post 模型,它 has_many :photos。在用户创建新帖子时,用户还应该能够为给定帖子选择照片。
我使用 RAILS 3.2.9、nested_form、carrierwave 和 jquery-fileupload-rails gem 和 ryan bates railscasts作为指南。
一切似乎都设置正确,但问题是,当用户选择一张照片(触发 fileupload() 函数)时,会创建新的帖子和新的照片记录。一旦我按下“创建帖子”,就会再次创建另一个帖子记录。
任何帮助/想法表示赞赏。
非常感谢。
彼得
class Post < ActiveRecord::Base
has_many :photos, as: :attachable, :dependent => :destroy
accepts_nested_attributes_for :photos, :allow_destroy => true
end
class Photo < ActiveRecord::Base
belongs_to :attachable, polymorphic: true
attr_accessible :image, :description, :post_id, :attachable_id, :attachable_type
mount_uploader :image, PhotoUploader
end
# Post Controller
def create
@post = Post.new(params[:post])
@post.save
end
# _form.html.erb
<%= nested_form_for @post, :html => { :multipart => true } do |f| %>
<%= f.fields_for :photos do |photo| %>
<% if photo.object.new_record? %>
<%= photo.file_field :image, id: "fileupload" %>
<%= photo.hidden_field :id %>
<%= photo.hidden_field :attachable_id %>
<%= photo.hidden_field :attachable_type %>
<% else %>
<%= image_tag(photo.object.image.url(:thumb)) %>
<%= photo.check_box :_destroy %>
<% end %>
<% end %>
<% end %>
#application.js
$('#fileupload').fileupload();