我使用RAILS 3.2.9,nested_form,carrIErwave和jquery-fileupload-rails gem和ryan bates railscasts作为指南.
所有似乎都设置正确,但问题是,当用户选择照片(触发fileupload()函数)时,会创建新的Post和新的Photo记录.一旦我按下“创建帖子”,就会再次创建另一个帖子记录.
任何帮助/想法表示赞赏.
非常感谢你.
切赫
class Post < ActiveRecord::Base has_many :photos,as: :attachable,:dependent => :destroy accepts_nested_attributes_for :photos,:allow_destroy => trueendclass Photo < ActiveRecord::Base belongs_to :attachable,polymorphic: true attr_accessible :image,:description,:post_ID,:attachable_ID,:attachable_type mount_uploader :image,PhotoUploaderend# Post Controllerdef create @post = Post.new(params[:post]) @post.saveend# _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();解决方法 https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js#L140
一旦选择文件,文件上传插件就会通过AJAX(创建帖子)提交表单(请参阅源文件的链接文件).这将在选择对象后立即创建对象.
为什么需要fileupload插件?您不需要通过AJAX提交它们,因此只需嵌套表单就能解决您的问题.只需将link_to_add和link_to_remove与常规文件字段一起使用即可.
编辑:
假设您想要保留文件字段插件(您似乎这样做),那么您需要有一种方法来接收它们.
最好的方法是在帖子视图页面内,将文件上传代码嵌套在您的照片的表单中,而不是嵌入Post的嵌套表单中.这样,每张照片都会发布到照片创建选项,然后你可以在照片控制器中提供一个JavaScript回叫,用隐藏字段更新Post表单,告诉它哪些photo_IDs上传到这个帖子(显然保证这个!).
我个人不喜欢这种方法,因为您将在用户创建帖子表单之前上传并接受文件(这意味着他们可以离开并在您的服务器上留下5-10张照片而不是任何帖子). ..如果你希望他们能够使用AJAX(又名文件上传插件)上传照片,这是一个必要的前提条件.
没有一个超级好的方法,文件上传工作通常是凌乱的.我不知道任何在文件字段上工作的jquery插件,并允许您将多个文件字段输入集转换为包含每个单独文件的隐藏字段.
@H_419_48@ 总结以上是内存溢出为你收集整理的ruby-on-rails-3 – Rails 3 – 嵌套模型 – has_many – jquery文件上传全部内容,希望文章能够帮你解决ruby-on-rails-3 – Rails 3 – 嵌套模型 – has_many – jquery文件上传所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)