Ошибка вложенной формы — ArgumentError (неправильное количество аргументов (0 вместо 1)):

Я следил за этим скринкастом, чтобы создать форму вложенной модели. http://railscasts.com/episodes/196-nested-model-form-part-1

Теперь я пытаюсь включить в свое приложение такую ​​форму вложенной модели, но я получил ошибку аргумента (неправильное количество аргументов (0 вместо 1)).

Кажется, я не могу понять, где я ошибся, и хотел бы получить совет о том, что я мог бы попробовать и почему могла произойти какая-то ошибка.

Ошибка возникает в этой строке в предметной модели.

has_many :lessons, :dependent => destroy

Другие соответствующие коды:

Контролер предметов:

  def new
    @subject = Subject.new
    #3 times one for lecture one for lab one for tut.
    3.times{@subject.lessons.build}

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @subject }
      format.js
    end
  end

Предметная модель

class Subject < ActiveRecord::Base
  has_many :lessons, :dependent => destroy
  attr_accessible :lesson_attributes, :acad_unit, :cohort_size, :discipline, :remarks, :subject_code, :subject_name, :year_of_study
  accepts_nested_attributes_for :lessons, :reject_if => lambda { |a| a[:lesson_type].blank? }, :allow_destroy => true
end

Модель урока

class Lesson < ActiveRecord::Base
  belongs_to :subject
  attr_accessible  :frequency, :lesson_type, :no_of_lesson, :possible_venues
end

_form.html.erb

    <%= form_for(@subject,:remote=>true) do |f| %>
  <% if @subject.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@subject.errors.count, "error") %> prohibited this subject from being saved:</h2>

      <ul>
      <% @subject.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :subject_code %><br />
    <%= f.text_field :subject_code %>
  </div>
  <div class="field">
    <%= f.label :subject_name %><br />
    <%= f.text_field :subject_name %>
  </div>
  <div class="field">
    <%= f.label :year_of_study %><br />
    <%= f.text_field :year_of_study %>
  </div>
  <div class="field">
    <%= f.label :discipline %><br />
    <%= f.text_field :discipline %>
  </div>
  <div class="field">
    <%= f.label :acad_unit %><br />
    <%= f.text_field :acad_unit %>
  </div>
  <div class="field">
    <%= f.label :cohort_size %><br />
    <%= f.text_field :cohort_size %>
  </div>
  <div class="field">
    <%= f.label :remarks %><br />
    <%= f.text_field :remarks %>
  </div>

  <ol>
  <%= f.fields_for :lessons do |builder| %>
    <%= render "lesson_fields", :f => builder %>
  <% end %>
  </ol>

<% end %>

_lesson_fields.html.erb

<p>
<div class="field">
    <%= f.label :lesson_type %><br />
    <%= f.text_field :lesson_type %>
  </div>
  <div class="field">
    <%= f.label :no_of_lesson %><br />
    <%= f.text_field :no_of_lesson %>
  </div>
  <div class="field">
    <%= f.label :frequency %><br />
    <%= f.text_field :frequency %>
  </div>
  <div class="field">
    <%= f.label :possible_venues %><br />
    <%= f.text_field :possible_venues %>
    </div>
</p>

person Butter Beer    schedule 20.12.2012    source источник
comment
ошибка в каком файле, в какой строке... см. из трассировки стека ур..   -  person Rahul garg    schedule 20.12.2012
comment
Эта строка: has_many :lessons, :depend =› destroy   -  person Butter Beer    schedule 20.12.2012
comment
Это полная трассировка стека. ArgumentError (неправильное количество аргументов (0 вместо 1)): app/models/subject.rb:2:in <class:Subject>' app/models/subject.rb:1:in ‹top (обязательно)›’ app/controllers/subjects_controller.rb:1:in `‹top (обязательно)› '   -  person Butter Beer    schedule 20.12.2012


Ответы (1)


Я думаю, вы хотели:

has_many :lessons, :dependent => :destroy

?

Здесь вы найдете хорошее обсуждение по теме.

person R Milushev    schedule 20.12.2012
comment
Чтобы уточнить, проблема здесь в том, что отсутствует : on destroy. - person John Naegle; 21.12.2012