Можно ли делать глубокие вложения в активном админе? - PullRequest
8 голосов
/ 22 ноября 2011

Это третий день, когда я задеваю Active Admin.

У меня есть @survey, что has_many :questions, и каждый вопрос has_many :answers - на самом деле это варианты, которые пользователи могут выбирать.

Но все же я не могу заставить его работать, он просто не создает ничего более глубокого, чем 1 уровень: даже форма работает должным образом, но ничего не создается.

1 Ответ

16 голосов
/ 11 августа 2012

У меня есть следующие предложения Курс-> Разделы-> Уроки.

Я сделал следующее:

form do |f|
  f.inputs "Details" do
    f.input :instructor, :as => :select 
    f.input :title
    f.input :name
    f.input :price
    f.input :discount
    f.input :slug
    f.inputs "Sections" do
       f.has_many :sections, :header=>"" do |section|
         section.input :name
         section.input :position
         if section.object.id
           section.input :_destroy, :as=>:boolean, :required => false, :label=>'Remove'
         end

         section.has_many :lessons, :header=>"Lessons" do |lesson|
           lesson.input :title
           lesson.input :position
           lesson.input :duration
           lesson.input :_destroy, :as=>:boolean, :required => false, :label=>'Remove'
         end
       end
   end

  end
  f.buttons
end

Мои модели следующие:

class Course < ActiveRecord::Base
    has_many :sections, :dependent => :delete_all 
    accepts_nested_attributes_for :sections, :allow_destroy => true
    attr_accessible :sections_attributes
 ....

class Section < ActiveRecord::Base
    belongs_to :course
    has_many :lessons, :dependent => :delete_all
    attr_accessible :course_id, :name, :position
    accepts_nested_attributes_for :lessons, :allow_destroy => true
    attr_accessible :lessons_attributes
....

class Lesson < ActiveRecord::Base
    belongs_to :section
    attr_accessible :duration, :position, :section_id, :title
....

И это прекрасно работает! Я не знаю, что произойдет, если я пойду на несколько уровней глубже.

...