2014-03-03 55 views
0

我正在做一些應該很簡單的事情,但由於我是rails新手而遇到麻煩。正確地在相關表格中迭代數據

我有一個名爲TimeSheet的表和名爲Entry的表。

我正在使用我的time_sheet顯示視圖,並且想要遍歷我的time_sheet上的相關條目。

我的模型是這樣設置的。用戶has_many:time_sheet。時間表belongs_to:用戶和has_many:條目。和條目belong_to:time_sheet

我的時間表視圖的樣子:

<% @current.each do |t| %> 
    <td><%= t.entries :customer_name %></td> 
    <td><%= t.entries :order_number %></td> 
    <td><%= t.entries :time_in %></td> 
    <td><%= t.entries :time_out %></td> 
    <% end %> 

我對time_sheet顯示控制器:

def show 
    if current_user 
    @current = current_user.time_sheets.entries 
    else 
    redirect_to new_user_session_path, notice: 'You are not logged in.' 
    end 

我越來越陌生輸出看起來像這樣每次迭代:

#<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Entry:0xb59dfcc8> 

任何幫助將不勝感激。

+0

只是一個猜測,但''%= t.customer_name%>'打印你在找什麼?您已經獲取了控制器中的所有條目。 –

+0

當我嘗試時出現此錯誤。未定義的方法'customer_name'爲# mild0d

回答

2

因爲你已經

@current = current_user.time_sheets.entries 

<% @current.each do |t| %> 

因此, 「T」 是你的相關time_sheets的每個條目。你確定有另外的條目嗎?即使假設語句沒有語法錯誤。

<td><%= t.entries :customer_name %></td> 

這樣怎麼樣。

def show 
     if current_user 
     @time_sheets = current_user.time_sheets 
     else 
     redirect_to new_user_session_path, notice: 'You are not logged in.' 
     end 
    end 

鑑於:

<% @time_sheets.each do |sheet| %> 
    <% sheet.entries.each do |t| %> 
     <td><%= t.customer_name %></td> 
     <td><%= t.order_number %></td> 
     <td><%= t.time_in %></td> 
     <td><%= t.time_out %></td> 
    <% end %> 
    <% end %> 

我認爲CUSTOMER_NAME,ORDER_NAME在你的項目表中的字段名。

+0

謝謝!非常棒! – mild0d

相關問題