0

我目前正在研究嵌套模型窗體。 我有一個主題模型。 這個主題模型有3種不同類型的教訓 - 教程,講座和實驗室。Rails模型 - 如何區分不同類型

我能夠得到與https://github.com/ryanb/nested_form一起使用的嵌套窗體。 但我想解決這個問題,因爲在表格中只會生成3個孩子(課堂模型)的表單,並且他們的第一個字段(lesson_type字段)將被自動填寫並修復。

我不太確定如何在Rails上建模這樣的情況。 這些是我到目前爲止的代碼。 任何意見,我可以嘗試或指出我所犯的錯誤將不勝感激。

這是表格。 現在我可以讓表單在控制器上顯示三次,但我不知道如何爲字段生成不同的值。到目前爲止,他們都在演講。

<%= nested_form_for(@subject, :remote=>true) do |f| %> 

    <div class="field"> 
    <%= f.label :subject_code %><br /> 
    <%= f.text_field :subject_code %> 
    </div> 

    <%= f.fields_for :lessons do |lesson_form| %> 
    <%= lesson_form.label :lesson_type %><br/> 
    <%= lesson_form.text_field :lesson_type, :value=> "lecture"%><br/> 
    <%= lesson_form.label :name %><br/> 
    <%= lesson_form.text_field :name %><br/> 

    <%= lesson_form.fields_for :lesson_groups do |lesson_group_form| %> 

     <%= lesson_group_form.label :group_index %><br/> 
     <%= lesson_group_form.text_field :group_index %> 
     <%= lesson_group_form.link_to_remove "Remove this task" %> 

    <% end %> 

    <p><%= lesson_form.link_to_add "Add a lesson_group",:lesson_groups,:id=>"open-lesson"%></p> 

<% end %> 
<% end %> 

這是控制器。創建將發生在索引頁面上。

def index 
    @subjects = Subject.all 
    @subject = Subject.new 

    lecture = @subject.lessons.build 
    lecture.lesson_groups.build 
    lecture.destroy 

    tutorial = @subject.lessons.build 
    tutorial.lesson_groups.build 
    tutorial.destroy 

    laboratory = @subject.lessons.build 
    laboratory.lesson_groups.build 
    laboratory.destroy 


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

主題模型

class Subject < ActiveRecord::Base 
    attr_accessible :subject_code, :lessons_attributes 
    has_many :lessons, :dependent => :destroy 
    accepts_nested_attributes_for :lessons, :allow_destroy => :true, :reject_if => lambda { |a| a[:lesson_type].blank? } 

end 

與教學模式

class Lesson < ActiveRecord::Base 
    belongs_to :subject 
    attr_accessible :lesson_type, :name, :subject, :lesson_groups_attributes 
    has_many :lesson_groups, :dependent => :destroy 
    accepts_nested_attributes_for :lesson_groups, :allow_destroy => true 
end 

回答

0

好吧,我不知道這是否是對Rails約定,但我得到了它根據工作我想。在主題模型中添加以下幾行:基本上分配模型中的課程類型字段。

lecture = @subject.lessons.build 
lecture.lesson_type = "lecture" 
lecture.lesson_groups.build 
lecture.destroy 

tutorial = @subject.lessons.build 
tutorial.lesson_type = "tutorial" 
tutorial.lesson_groups.build 
tutorial.destroy 

laboratory = @subject.lessons.build 
laboratory.lesson_type = "laboratory" 
laboratory.lesson_groups.build 
laboratory.destroy 

,並使其以使它們不能改變我所做的課型是隻讀

<%= lesson_form.text_field :lesson_type, :readonly=>true%><br/> 
相關問題