0

新しい幼稚園の次のフォーム宣言があります

<%= form_for @kindergarten, :html => {:multipart => true}  do |f|%>

                <%= render 'shared/error_messages', object: f.object %>
            </br>   
                <%= f.fields_for :photos do |p| %>
                    <%= p.label 'upload photo'%>
                    <%= p.file_field :image %>
                <% end %>
            </br>
                <%= render 'about_company', f: f%>
            </br>
                <%= render 'contact', f: f %>
                <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
            <%end%>

この背後にある論理は、1 つの幼稚園が複数の写真を持つことができるということです。

モデル宣言は次のとおりです。

幼稚園

has_many :photos, limit: 7, dependent: :destroy   
accepts_nested_attributes_for :photos

写真

  attr_accessible :image, :logo, :kindergarten_id
  belongs_to :kindergarten
  mount_uploader :image, ImageUploader

  validates :kindergarten_id, presence: true
  validates :photo, presence: true

私はこれに数時間苦労していますが、「ファイルのアップロード」ボタンとラベルが表示されない理由がわかりません。今表示されていると言うとき、それらは完全に無視され、レンダリングされた html には存在しないことを意味します。

4

1 に答える 1

1

新しい @ kindergarden のフォームをレンダリングする前に、これが機能するように写真の関連付けを作成する必要があります。

def new
  @kindergarden = Kindergarden.new
  @kindergarden.photos.build # provides a photo object to use in the form
  # rest of your action
end

また、フォームに複数の写真フィールドが必要な場合は、次のようにすることができます。

 5.times { @kindergarden.photos.build } 
于 2012-09-22T18:43:05.610 に答える