2012-12-20 47 views
0

我跟随此屏幕截图制作嵌套模型表单。 http://railscasts.com/episodes/196-nested-model-form-part-1嵌套表单错误 - ArgumentError(参数的错误数目(0代表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> 
+0

错误在哪个文件,什么行...从你的stacktrace看到.. –

+1

This line:has_many:lessons,:dependent => destroy –

+0

这是完整的堆栈跟踪。 ArgumentError(错误的参数数量(0代表1)): app/models/subject.rb:2:in <' app/models/subject.rb:1:in <' app/controllers/subjects_controller.rb:1:在' –

回答

4

我想你想:

has_many :lessons, :dependent => :destroy 

Here你会发现一个很好的话题讨论。

+0

为了澄清,这里的问题是缺少的:on destroy。 –

+0

谢谢!有效。 –

相关问题