1

我有一个模型Subject和一个嵌套模型Lessons

我遇到了未知属性的问题:subject_id

我已经尝试了Rails 3 Nested Models unknown attribute Error中建议的不同解决方案,但我仍然收到错误。

我对 Rails 很陌生,我似乎无法弄清楚出了什么问题。如果有人可以帮助我,我将不胜感激。

这是我的相关文件。

主题模型

  attr_accessible :subjectCode, :subject_id

  has_many :lessons, :dependent => :destroy
  accepts_nested_attributes_for :lessons, :reject_if => lambda { |a| a[:content].blank?     }, :allow_destroy => true

end

课程模型

  attr_accessible :lessonName
  belongs_to :subject

主题控制器

def show
  @subject = Subject.find(params[:id])
end

def new
  @subject = Subject.new
  @lesson = @subject.lessons.build
end

def create
  @subject = Subject.new(params[:subjectCode])
  if @subject.save
    redirect_to @subject, :notice => "Successfully created subject."
  else
    render :action => 'new'
  end
end

主题形式

<%= form_for @subject do |f| %>
<%= f.error_messages %>
<p>
  <%= f.label :subjectCode %><br />
  <%= f.text_field :subjectCode %>
</p>
<%= f.fields_for :lessons, @lesson do |builder| %>
<p>    
<%= builder.label :lessonName %> <br/>
<%= builder.text_area :lessonName, :rows=>3 %>
</p>
<% end %>
<p><%= f.submit "Submit" %></p>

路线.rb

resources :subjects do resources :lessons end
4

1 回答 1

0

subject_id应该放在Lesson模型中,因为它属于,Subject你也应该把它放在accessible中,也放在lessons_attributesSubjectattr_accessible模型中。我认为在您的创建操作中构建主题的代码应该是:

@subject = Subject.new(params[:subject]), 不是

@subject = Subject.new(params[:subjectCode])

试试这个,看看会发生什么。

于 2012-11-01T18:35:03.770 回答