我有一份新幼儿园的申请表。
<%= 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现在,当生成@ generated new时,我会得到以下错误:
undefined method 'photos' for nil:NilClass
Application Trace | Framework Trace | Full Trace
app/controllers/kindergartens_controller.rb:5:in `new'发布于 2012-09-23 05:12:13
您编写的是@kindergarden.photos.build而不是@kindergarten.photos.build。我希望拼写错误不在实际代码中。也可以试试@kindergarten=Kindergarten.create。如果您正在调用new,则只创建一条未保存的记录,后面应该调用save方法。这可能是NilClass错误的原因。
https://stackoverflow.com/questions/12547543
复制相似问题