1

Rails 3.2.14 の初心者、Heroku でのテスト、s3_direct_upload gem を使用した S3 への画像ファイルのアップロード。

私は宝石をうまく動かしています。ドラッグ アンド ドロップ、プログレス バー、S3 への直接アップロードがうまく機能します。アップロードは Attachment モデルに関連付けられています。アップロード時に新しいレコードが適切に作成されます。ここまでは順調です。

私が抱えている問題はparent_id、新しいレコードのフィールドを設定したいのですが、それを渡す方法がわからないことです。gem は従来のフォームを使用してアップロードを送信するのではなく、javascript を介して処理されます。

<%= s3_uploader_form callback_url: attachments_url, callback_param:
"attachment[attachment_url]", id: "myS3Uploader" do %>
    <%= file_field_tag :file, multiple: true %>
<% end %>

の作成アクションattachments_controller.rb:

def create
  @attachment = Attachment.create(params[:attachment])
end

JavaScript ビューを呼び出しますcreate.js.erb:

<% if @attachment.new_record? %>
  alert("Failed to upload attachment: <%= j @attachment.errors.full_messages.join(', ').html_safe %>");
<% else %>
  $("#attachments").prepend("<%= j render(@attachment) %>");
<% end %>

レコードの保存が機能したかどうかを確認し、新しいアップロード サムネイルを現在のビューに追加します。

通常のフォームやアクションを扱っていないのでcreate、少し困惑しています。

以下を使用して、Attachment モデルにデフォルト値を設定できますbefore_save

before_save :set_defaults

def set_defaults
  self.name = "Photo"
  self.parent_id = 1
end

ただし、parent_id親オブジェクト (つまり、ブログ投稿) の作成中に、アップロードが行われるページで定義されます。

has_manyandを使用する必要があることはわかっbelongs_toていますが、それらはセットアップされて正常に動作していますが、従来のフォームを使用してデータを送信していないため、parent_id を割り当てる方法がわかりません。

フォームを渡しparent_idてモデルでアクセスしようとしました:

<%= s3_uploader_form callback_url: attachments_url(:parent_id => 99), callback_param:
"attachment[attachment_url]", id: "myS3Uploader" do %>

それはうまくいきませんでしたが、とにかくモデル内のパラメータにアクセスすることは想定されていません。

この点を乗り越えるための助けをいただければ幸いです。

4

1 に答える 1