0
class Channel < ActiveRecord::Base
  has_many :programs

end

class Program < ActiveRecord::Base
  belongs_to :channel
  has_many :program_schedules

end

class ProgramSchedule < ActiveRecord::Base
  belongs_to :program
end

次のようなデータの配列を取得したいと思います。

  • チャネル1:

    • プログラム1

      • スケジュール1
    • プログラム2

      • スケジュール1
      • スケジュール2
      • スケジュール3
  • チャネル2:

    • プログラム1
      • スケジュール1
      • スケジュール2
      • スケジュール3

このクエリを試しましたが、「チャネル」行のみを取得します(プログラムとスケジュールは含まれません)

 @data = Channel.joins(:programs => :program_schedules).group("channel_id")
4

1 に答える 1

1

この方法ですべての行を取得することはお勧めしません。

このようなことをしてください。

コントローラで、たとえばインデックスアクションで

def index
  @channels = Channel.all
end

すべてを表示したいビューで。

%ul#channels
  = @channels.each do |channel|
    %li= channel.name
    %ul.channel
      = channel.programs.each do |program|
        %li= program.name
        %ul.program
          = program.schedules.each do |schedule|
            %li= schedule.name
于 2012-10-23T22:20:39.643 に答える