所以我有一个“风格”模型,它有很多“图像”。在新样式页面中,我希望能够在同一页面中添加所有图像。但是,由于我们还没有创建样式记录,所以它没有 ID。那么我将如何收集所有由 ajax 构建/上传的图像,并在保存新样式后更新它们的 style_id 属性?
我正在使用 jquery-file-upload 将图像添加到 Image 表,并将我的文件上传到 Rackspace 云文件。所有这些都有效,除了手动设置之外,我无法设置 style_id。
是否有最佳实践/正确的方法来解决这个问题,因为 jquery-file-upload 使用 Ajax,我不确定保存我父母的最佳方法。我认为最好的方法是使用 ajax 来提交父表单,而不是使用 dom,比如向父表单添加隐藏的输入/元素?
谢谢你
风格:形式偏
<%= form_for @style, :html => {:multipart => true} do |f| %>
//NORMAL RAILS FORM CODE HERE
<% end %>
<%= form_for Image.new, :html => { :multipart => true, :id => "fileupload" } do |f| %>
<%= f.file_field :file, :multiple => true %>
<% end %>
<script>
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
url: '<%= style_images_path(1) %>',
add: function (e, data) {
data.context = $('<div class="img uploading"/>').text('Uploading...').appendTo(document.body);
data.submit();
},
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<img src="'+file.thumbnail_url+'">').appendTo(data.context);
});
console.log(data);
data.context.append("<span>done</span>");
},
option: {
autoUpload: true,
}
});
});
</script>
在上面的代码中你可以看到我手动设置了 style_id... style_images_path(1)
-
我提出的解决方案:
我的想法是将所有子项(图像)的 id 数组传递给样式的创建/更新方法。并在控制器中,将匹配 id 的所有 style_id 属性更新为新创建的样式的 id ...我认为这可能吗?