2013-12-23 59 views
0

我有一個Rails應用程序在那裏我有三種模式:列和行。他們是這樣的:模式對應於另一個模型

表:

has_many :columns 
accepts_nested_attributes_for :columns 

柱:

belongs_to :table 
has_many :rows 

accepts_nested_attributes_for :rows, :reject_if => lambda { |b| b[:data].blank? } 

行:

belongs_to :column 

我試圖使像我所描述的一個表以前的答案:Creating a spreadsheet。爲了實現它,我有兩個控制器:一個TablesController和一個RowsController(行控制器可能應該被稱爲不同的東西,因爲它包含行和列)。我有嵌套的路線,所以你可以訪問/ tables/1/rows,它會顯示與第一個表關聯的列。

下面的代碼:

@columns = Column.where(:table_id => @table.id) 
@rows = Row.all 

和:

<% @columns.each do |column| %> 
    <% @rows.each do |row| %> 
    Column name:<%= column.name %><br> 
    Row data: <%= row.data %><br> 
    <hr> 
    <% end %> 
<% end %> 

正如你所看到的,行返回所有在整個數據庫中的結果。但我無法弄清楚如何讓他們與他們所在的專欄相對應?

感謝您的幫助!

回答

1

更新您的控制器代碼:

@columns = Column.where(:table_id => @table.id) 
@rows = Row.all 

到:

@columns = Column.where(:table_id => @table.id) 

然後在您的視圖:

<% @columns.each do |column| %> 
    <% column.rows.each do |row| %> 
    Column name:<%= column.name %><br> 
    Row data: <%= row.data %><br> 
    <hr /> 
    <% end %> 
<% end %> 

因爲你有@rows = Rows.all,它會返回所有rows表中的行。要檢索rows對於某個特定的column,您應該執行column.rows

+0

這是完美的。謝謝! – infinity

相關問題