Arc*_*nic 3 ruby-on-rails associations ruby-on-rails-3.1
我有3个模型 - 标准,图层和layers_assocs.标准通过layer_assocs有很多层,其余的是微不足道的.该layers_assocs表存储standards_id,layer_id和一个visible布尔值,而层表只是一个查找表name(和自动递增id).
在标准选项页面上,我有一个更新:visible嵌套属性的复选框.我正在寻找一种在表单标签中显示关联图层名称的方法.目前,我有这个复选框:
<%= f.fields_for :layers_assocs do |assoc| %>
<%= assoc.check_box :visible %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我如何使用layers_assocs belongs_to 图层关联显示关联的图层名称是一个谜.我可以layer_id用这个显示
<%= assoc.text_field :layer_id %>
Run Code Online (Sandbox Code Playgroud)
但是尝试将其用作整数,以便通过图层显示名称standard.layers[assoc.layer_id]或standard.layers[:layer_id]不会飞行.assoc是一个FormBuilder对象,所以我不知道该怎么做.用标准中的所有东西检查assoc吐出一个巨大的物体.
我已经检查了rails apifields_for和这个问题没有运气.任何一个:name或:visible未定义.
得到它了.一定是咖啡.
<% @standard.layers_assocs.each do |assoc| %>
<%= f.fields_for :layers_assocs, assoc do |layer_field| %>
<%= layer_field.label assoc.layer.name %>
<%= layer_field.check_box :visible %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
要使复选框起作用,它需要visible属性作为键.f.check_box layer_assoc.visible我会认为你试图强迫它"真实"或"虚假".然后获取名称的问题是,当:visible在正确的范围内时,layer_assoc.layer.name在fields_for块内无法访问,因为layer_field是FormBuilder对象,而不是layers_assoc对象.以上内容确保两个范围都可用且输出不会过度.f.fields_for :layers_assoc将输出与标准layer_assocs数组中的对象一样多的重复项.f.fields_for :layers_assoc, assoc将其限制为正确的数量.
请注意,表单标签未for="..."在输出HTML中与其关联的复选框正确"附加" .我可以处理它,但如果你知道更好的方法让我知道.
| 归档时间: |
|
| 查看次数: |
4216 次 |
| 最近记录: |