我有一个很好的巢形式。表单基本上是具有地址的客户。 我试图在客户和地址级别呈现部分,以指示谁创建了每条记录,谁是最后一个更新记录的人。
我的观看代码是:
<%= 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 %>
相关代码是&lt;%= render&#39; layouts / audit&#39;,audit :: address%&gt;
这引发了错误:
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 :(得分:0)
我能够通过在我的视图中引入以下代码来实现这一目标:
<% for i in 1..@customer.addresses.size %>
<%= f.fields_for @customer.addresses[i-1] do |a| %>
<%= render "address_fields", f: a %>
<%= render 'layouts/audit', audit: @customer.addresses[i-1] %>
<% end %>
<% end %>
答案 1 :(得分: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行看到。