2017-01-11 59 views
0

类设备has_many :equipment_maintenancesaccepts_nested_attributes_for : equipment_maintenances, allow_destroy: true深度嵌套形式和对象属性

类EquipmentMaintenance has_many :equipment_maintenanceitemsaccepts_nested_attributes_for : equipment_maintenanceitems, allow_destroy: true

以下形式可以适当地生成HTML来更新孙子(即name="equipment[equipment_maintenance_attributes][0][equipment_maintenanceitems_attributes][1][active]"如下:

<%= form_for @equipments do |equipment| %> 
    <% @equipment_maintenances.each do |equipment_maintenance| %> 
    <%= equipment.fields_for :equipment_maintenance do |em| %> 
     <%= em.fields_for :equipment_maintenanceitems do |f| %> 
     <%= f.check_box :active %> 
     <%= f.text_field :order %> 
     <%# equipment_maintenanceitem.name %> 
     <%= f.select :frequenc, [3,4,6,12] %> 
     <% end %> 
    <% end %> 
    <% end %> 
    <%= equipment.submit %> 
<% end %> 

但是,我还没有找到正确的语法来引用孙子的名字equipment_maintenanceitem.name

更新虽然原来的问题得到了适当的回答,但问题并没有完全说明。 EquipmentMaintenanceItem belongs_to :ordinary_maintenanceitem和目标是获得equipment_maintenanceitem.ordinary_maintenanceitem.name

+0

你只是想显示maintenanceitem的名字吗? – lifejuggler

+0

那是对的 – Jerome

回答

0

根据问题的原配方的名字,得到的答案是:

<%= f.object.name %> 

在更新的情况下,答案是:

<%= OrdinaryMaintenanceItem('id = ?',f.object.maintenanceitem_id).pluck("name") %> 

效率不是很高,需要清理的数组和字符串符号...

0
<%= form_for @equipments do |equipment| %> 
    <% @equipment_maintenances.each do |equipment_maintenance| %> 
    <%= equipment.fields_for :equipment_maintenance do |em| %> 
     <%= em.fields_for :equipment_maintenanceitems do |f| %> 
     <%= f.check_box :active %> 
     <%= f.text_field :order %> 
     <%= f.label :name %> 
     <%= f.select :frequenc, [3,4,6,12] %> 
     <% end %> 
    <% end %> 
    <% end %> 
    <%= equipment.submit %> 
<% end %> 

一个简单的方法是使用标签来显示equipment_maintenanceitems

+0

啊!听起来很愚蠢。但我没有意识到我正在承担一些事情。这个问题是错误的(现在更新)。我正在尝试获取相关对象的属性。 – Jerome

+0

此外,建议的解决方案将返回“名称”,而不是该属性的内容 – Jerome