0

だから私は 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に更新します...これは可能だと思いますか?

4

1 に答える 1