だから私は has_many の「画像」を持つ「スタイル」モデルを持っています。新しいスタイルのページで、同じページに画像をすべて追加できるようにしたい。ただし、スタイル レコードはまだ作成していないため、ID はありません。では、ajax によってビルド/アップロードされたすべての画像を収集し、新しいスタイルを保存した後にそれらの style_id 属性を更新するにはどうすればよいでしょうか?
jquery-file-upload を使用して画像を Image テーブルに追加し、ファイルを Rackspace クラウド ファイルにアップロードしています。これはすべて機能しています。手動で設定する以外に style_id を設定することはできません。
jquery-file-upload は Ajax を使用しているため、これに関するベスト プラクティス/適切な方法はありますか?親を保存する最善の方法がわかりません。親フォームに非表示の入力/要素を追加するなど、DOMを使用するのではなく、ajaxを使用して親フォームも送信するのが最善の方法だと思いますか?
ありがとうございました
スタイル: フォーム部分
<%= 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に更新します...これは可能だと思いますか?