1

私は最初の Rails アプリケーションに取り組んでおり、フォームに複数の画像アップロードを設定しようとしています。多数のコンテスト エントリを含むコンテストを作成しました。コンテスト エントリには多数の画像を含めることができます。コンテストのエントリー作品は動作していますが、フォームの画像アップロード部分が動作しません。私はこのチュートリアルに従っていますhttp://lucapette.com/rails/multiple-files-upload-with-carrierwave-and-nested_form/搬送波ウィキからリンクされています。

コンテストエントリーモデル

class ContestEntry < ActiveRecord::Base
  attr_accessible :body, :title, :contest_id, :entry_images_attributes
  validates :user_id, presence: true
  validates :title, presence: true, length: { maximum: 140 }
  validates :body, presence: true
  validates :contest_id, presence: true

  belongs_to :contest
  belongs_to :user

  has_many :entry_images, as: :imageable

  accepts_nested_attributes_for :entry_images
end

エントリーイメージモデル

class EntryImage < ActiveRecord::Base
  attr_accessible :alt, :image_path

  belongs_to :imageable, :polymorphic => true

  validates :image_path, presence: true

  mount_uploader :image, ImageUploader
end

新規エントリーフォーム

<%= nested_form_for([:contest, @entry], :html => {:multipart => true}) do |f| %>
    <%= render 'shared/error_messages', object: f.object %>
    <%= f.hidden_field :contest_id %>
    <p>
        <%= f.label :title %><br />
        <%= f.text_field :title %>
    </p>

    <p>
        <%= f.label :body %><br>
        <%= f.text_area :body %>
    </p>

    <%= f.fields_for :entry_images do |builder|  %>
        <p>
        <%= builder.label :alt %><br />
        <%= builder.text_field :alt %>
        </p>
        <p>
        <%= builder.label :image_path %><br />
        <%= builder.file_field :image_path %>
        </p>

    <% end %>
    <p><%= f.link_to_add "Add Image", :entry_images %></p>

    <%= f.submit "Enter", class: "btn btn-large btn-primary" %>
<% end %>
<%= javascript_include_tag :defaults,"nested_form" %>

何らかの理由で <%= f.fields_for :entry_images do |builder| に何も表示されない %> ブロックします。空白で、エラーメッセージもありません。<%= f.fields_for :entry_image do |builder| に切り替えると %> を使用して、nested_form_for プラグインの代わりに form_for を使用するように切り替えます。すべてのフィールドが表示されますが、送信時にエラーが発生します。

何か案は?

ありがとう、コーリー

4

0 に答える 0