2012-09-22 68 views
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 :image, presence: true 

而这里的幼儿园控制器的样子:

def new 
    @kindergarten = Kindergarten.new 
    @kindergarden.photos.build 
    end 

现在, @kindergarten新时生成我得到以下错误:

undefined method 'photos' for nil:NilClass 

Application Trace | Framework Trace | Full Trace 
app/controllers/kindergartens_controller.rb:5:in `new' 
+2

拼写错误:幼儿园和幼儿园不一样 – rossta

+0

现在我觉得自己像个白痴。感谢你的回答! –

回答

1

你写@kindergarden.photos.build而不是@kindergarten.photos.build。我希望错字不在实际的代码中。 也试试@kindergarten=Kindergarten.create。如果您正在调用new,只会创建一个未保存的记录,应该在之后调用save方法。这可能是NilClass错误的原因。