我有一个模型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>
的routes.rb
resources :subjects do resources :lessons end
答案 0 :(得分:0)
subject_id
应放在课程模型中,因为它属于Subject
,您也应将其置于可访问状态,并将lessons_attributes
放入主题attr_accessible
中模型。我认为在你的创建动作中构建Subject的代码应该是:
@subject = Subject.new(params[:subject])
,而不是
@subject = Subject.new(params[:subjectCode])
试试这个,看看有什么事情发生。