我正在研究Rails應用程序,目前我有2個模型 - 主題和課程。 一個學科有三種不同類型的課程 - 講座,教程和實驗室。我建模的模型有3個has_one。Rails與同一模型的多個Has_one關係
現在,我正在嘗試爲主題和課程創建嵌套表單,但保存的講座,教程和實驗室始終是呈現的第一個表單。 即我有3個嵌套的形式分別爲講座,教程和實驗室,但保存的講座,教程和實驗室始終是最先建立的。在我的代碼中,講座首先建立,所以教程和實驗室的屬性將遵循我爲演講填寫的內容。
我不知道我在哪裏出錯了,或者即使有多個has_one關係在這種情況下工作,所以任何意見將不勝感激。
的相關代碼如下:
主題模型
class Subject < ActiveRecord::Base
has_one :lecture, :class_name => "Lesson"
has_one :laboratory,:class_name => "Lesson"
has_one :tutorial, :class_name => "Lesson"
accepts_nested_attributes_for :lecture
accepts_nested_attributes_for :laboratory
accepts_nested_attributes_for :tutorial
end
的教訓模型
class Lesson < ActiveRecord::Base
belongs_to :subject
end
的主題和教訓嵌套形式
<%= form_for(@subject_list) do |f| %>
<div class="field">
<%= f.label :subject_code %><br />
<%= f.text_field :subject_code %>
</div>
<div>
<%= f.fields_for :lecture do |lecture| %>
<%= render "lecture_fields", :f => lecture %>
<% end %>
</div>
<div>
<%= f.fields_for :tutorial do |tutorial| %>
<%= render "tutorial_fields", :f => tutorial %>
<% end %>
</div>
<div>
<%= f.fields_for :laboratory do |laboratory| %>
<%= render "laboratory_fields", :f => laboratory %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
新在主體控制器中的動作
def new
@subject = Subject.new
lecture = @subject.build_lecture
laboratory = @subject.build_laboratory
tutorial = @subject.build_tutorial
respond_to do |format|
format.html # new.html.erb
format.json { render json: @subject }
end
end
如果有人能幫我找出我出錯的地方,我將不勝感激。如果在我不應該創建這樣的多重關係的情況下,我想就如何實際渲染出3個具有指示課程類型的默認字段的表單提供一些建議。
非常有幫助。在我的應用程序中缺少外鍵聲明。 –