ruby-on-rails – 在Rails中使用Carrierwave的嵌套表单,内联上传
我对Rails中的嵌套表单,多文件上传和进度条有相当深奥的用法.到目前为止,我还没有找到关于此的任何在线讨论.如果我忽略了什么,我很抱歉.请指正.
这就是我想要的: >给定表单具有多个动态字段.其中一个是“附加文件”. >点击“附加文件”. 以下是我正在使用的模型和协会. >我有一个模型录音,其中有许多AudioFiles. 以下是“创建录制”表单的行为: >它应该允许用户添加多个子字段,包括多个音频文件. 有许多资源可以演示如何将上传器与carrierwave结合使用来存储具有进度信息的文件.例如,https://github.com/yortz/carrierwave_jquery_file_upload和https://github.com/blueimp/jQuery-File-Upload/wiki/Rails-setup-for-V5. 本质上,这些示例所做的是从这些上传者之一生成请求,该请求被定向到控制器创建动作,该模型具有附加到其上的载波上传器.我有这么多工作可以. 我无法弄清楚的是如何在嵌套的表单上下文中执行此操作.棘手的是: >假设我编写了AJAX来从“创建录制”表单发帖,并让该帖子创建一个新的AudioFile记录.如何将该音频文件与尚未创建的录音相关联? 我可以想到做上述两种方法的hacky方法,但我想知道是否有更优雅的方法.我对rails很新,所以我猜我没有充分利用它. 谢谢, 解决方法
我想我会通过分享我如何解决这个问题来回馈社区.
总而言之,主要问题是协调CarrierWave的行为,嵌套表单和文件上传的细粒度控制. 问题的关键在于嵌套表单在根控制器的#create操作的单个POST操作中创建根记录及其所有关联. 在上面的示例中,Recording模型是根,而AudioFile,Note和Categorization是与Recording一起创建的关联. 因此,对于嵌套表单,我必须在单个POST中创建所有这些记录,这将排除单独取消上载或与添加其他字段(如Notes)并行上载的可能性. 这不会带来良好的用户体验.我的解决方案非常简单: >我选择不使用嵌套表格. 这样就可以在“录制”页面上对所有字段进行内联编辑,即使这些字段映射到不同(关联)的模型也是如此.因此,用户可以上传多个文件,在上传时添加注释,回放已经上传的文件,以及随意取消上传. 因此,整个用户体验更加顺畅.根据定义,嵌套表单永远无法实现这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |