3

私のモデルからのスニペット:

attr_accessible :package1_file_name, :package2_file_name
has_attached_file :package1
has_attached_file :package2

私の _form (簡易版) から:

<%= form_for(@submission, :html => { :multipart => true, :id => "fileupload"  }) do |f| %>
 <%= f.file_field :package1%>
 <%= f.file_field :package2%>
<% end %>

問題は、ペーパークリップがデータベース内の各ファイルに対して2 つの別個のエントリを挿入することです。ただし、テーブルに2つの個別のフィールドがあるため、1つのエントリにのみ挿入したい: package1_file_name, package2_file_name.

これを達成する方法はありますか?

ありがとうございました!


クリスチャン・ヴァルガの場合:

jQuery file upload元の質問のコードを単純化するべきではないかもしれませんが、プラグインを使用した後のビューは実際には次のようになります。

<%= f.fields_for :uploads do |upload| %>
    <div class="row fileupload-buttonbar">
        <!-- The first upload field -->
          <span class="btn btn-success fileinput-button">
                <%= upload.file_field :package1 %>
          </span>
        <!-- The second upload field -->
          <span class="btn btn-success fileinput-button">
                <%= upload.file_field :package2 %>
          </span>
    </div>
<% end %>

upload現在のモデルの子モデルはどこですか

2 つのファイル フィールドが別々の添付ファイルのように機能するかどうかはわかりませんmultipartが、これら 2 つの添付ファイルを 1 つにマージしようとしています。

4

1 に答える 1

4

わかりました。少し調査しましたが、まだ問題を再現できません。そのコードを使用してテスト アプリケーションを作成したところ、データベースに 1 つのエントリしか挿入されませんでした。

プロジェクトの作成 (端末)

rails new paperclip-test
cd paperclip-test
echo "gem 'paperclip'" >> Gemfile
bundle
rails generate scaffold submission
rails generate paperclip submission package1 package2
rake db:migrate

モデルの更新 ( submission.rb )

attr_accessible :package1, :package2
has_attached_file :package1, :styles => { :medium => "300x300>", :thumb => "100x100>" }
has_attached_file :package2, :styles => { :medium => "300x300>", :thumb => "100x100>" }

コントローラーの更新 ( submits_controller.rb )

def create
    # @submission = Submission.new(params[:submission])
    @submission = Submission.create(params[:submission])
end

更新フォーム ( _form.html.erb )

<%= f.file_field :package1 %>
<%= f.file_field :package2 %>

ビューの更新 ( show.html.erb )

<%= image_tag @submission.package1.url(:medium) %>
<%= image_tag @submission.package2.url(:medium) %>

アプリを実行して新しい提出物を作成する

コンソールに戻ります。

sqlite3 db/development.sqlite3
select * from submissions;

結果:

1|2013-02-21 21:16:38.898602|2013-02-21 21:16:38.898602|image_1.jpg|image/jpeg|54231|2013-02-21 21:16:38.419947|image_2.jpg|image/jpeg|61766|2013-02-21 21:16:38.658720

https://github.com/thoughtbot/paperclip#quick-startからのペーパークリップの説明

于 2013-02-21T21:38:35.080 に答える