首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套表单显示错误

嵌套表单显示错误
EN

Stack Overflow用户
提问于 2012-09-23 04:41:40
回答 1查看 103关注 0票数 0

我有一份新幼儿园的申请表。

代码语言:javascript
复制
<%= 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个幼儿园可以有多张照片。

以下是模型声明:

幼儿园

代码语言:javascript
复制
has_many :photos, limit: 7, dependent: :destroy   
accepts_nested_attributes_for :photos

照片

代码语言:javascript
复制
  attr_accessible :image, :logo, :kindergarten_id
  belongs_to :kindergarten
  mount_uploader :image, ImageUploader

  validates :kindergarten_id, presence: true
  validates :image, presence: true

下面是幼儿园控制器的外观:

代码语言:javascript
复制
  def new
    @kindergarten = Kindergarten.new
    @kindergarden.photos.build
  end

现在,当生成@ generated new时,我会得到以下错误:

代码语言:javascript
复制
undefined method 'photos' for nil:NilClass

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-23 05:12:13

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12547543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档