2014-05-13 268 views
0

我有一個很好的嵌套表單。該表格基本上是一個帶地址的客戶。 我試圖在客戶和地址級別呈現一個部分,以指示誰創建了每條記錄,誰是最後一個更新記錄的人。Rails:渲染嵌套表格

我的視圖的代碼是:

<%= form_for(@customer) do |f| %> 
    <%= render 'cust_fields', f: f %> 
    <%= render 'layouts/audit', audit: @customer %> 
    <strong>ADDRESSES:</strong> 
    <hr /> 
    <%= f.fields_for :addresses do |a| %> 
    <%= render "address_fields", f: a %> 
    <%= render 'layouts/audit', audit: :addresses %> 
    <% end %> 
<% end %> 

有問題的代碼是<%=渲染 '佈局/審計',審計:地址%>

這投擲該錯誤:

undefined method `created_by' for :addresses:Symbol 

我試圖改變:地址到@ customer.addresse,但這也不起作用。爲什麼?

我的部分代碼是:

<% created_user = User.find(audit.created_by) %> 
<% updated_user = User.find(audit.updated_by) %> 
<div class="row audit-info"> 
    <small> 
    <div class="pull-left"> 
    Created by: <%= created_user.name %> 
    </div> 
    <div class="pull-right"> 
    Last updated by: <%= updated_user.name %> 
    </div> 
    </small> 
</div> 

無論是客戶和地址表有CREATED_BY和updated_by列。

任何幫助將不勝感激。

+0

也許是因爲:地址是一個數組,因此局部不知道要使用哪個地址? – DaveInFL

回答

0

我能夠在我看來,引入下面的代碼得到這個工作:

<% for i in [email protected] %> 
    <%= f.fields_for @customer.addresses[i-1] do |a| %> 
     <%= render "address_fields", f: a %> 
     <%= render 'layouts/audit', audit: @customer.addresses[i-1] %> 
    <% end %> 
<% end %> 
0

實際上,上述沒有,因爲我是雙數着孩子的記錄工作。 做什麼工作(後一些更多的研究)是以下幾點:

<%= f.fields_for :addresses do |a| %> 
    <div class="deleterow"> 
    <%= render "address_fields", f: a %> 
    <%= render 'layouts/audit', audit: @customer.addresses[a.index] %> 
    </div> 
<% end %> 

的關鍵是使用a.index,這可在線看到4