Вот решение, которое работает внутри ActiveScaffold:
app / controllers / people_controller.rb
class PeopleController < ApplicationController
active_scaffold :person do |config|
config.label = "Report of people and other living creatures"
config.actions.exclude :show, :delete, :edit
# this sets up clickable links for pets and plants.
# clicking either link will expand BOTH child object collections.
config.columns[:pets].set_link('nested', :parameters => {:associations => "pets plants"})
config.columns[:plants].set_link('nested', :parameters => {:associations => "pets plants"})
# uncomment these if you want to allow editing of pets and plants
# config.nested.add_link("Person's pets", [:pets])
# config.nested.add_link("Person's plants", [:plants])
end
end
Теперь отчет открывается со свернутыми дочерними таблицами, поэтому мы должны их развернутьиспользуя event.simulate.js из protolicious .
Загрузите protolicious и скопируйте event.simulate.js в ваш каталог public / javascripts.
Сейчасвключите в ваш макет event.simulate.js:
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag "event.simulate.js" %>
<%= active_scaffold_includes %>
И добавьте этот тег сценария в нижней части вашего представления:
<script type="text/javascript">
// iterates through each ActiveScaffold nested item link and clicks it
$$('a.nested').each(function(link, index) {
link.simulate('click');
});
</script>
Учитывая следующие модели
app / models / person.rb
class Person < ActiveRecord::Base
has_many :pets
has_many :plants
end
app / models / pet.rb
class Pet < ActiveRecord::Base
belongs_to :person
end
app / models / plant.rb
class Plant < ActiveRecord::Base
belongs_to :person
end