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 new が生成されると、次のエラーが表示されます。

undefined method 'photos' for nil:NilClass

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

1 に答える 1

1

@kindergarden.photos.buildの代わりに書いてい@kindergarten.photos.buildます。タイプミスが実際のコードにないことを願っています。また、試してみてください@kindergarten=Kindergarten.create。new を呼び出している場合は、保存されていないレコードを作成するだけで、その後に save メソッドを呼び出す必要があります。それが NilClass エラーの原因である可能性があります。

于 2012-09-22T21:12:12.797 に答える