不显示嵌套表单

时间:2012-09-22 18:30:49

标签: ruby-on-rails nested-forms has-many

我有一个新幼儿园的以下表格声明

<%= 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中。

1 个答案:

答案 0 :(得分: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 }