以循环嵌套形式生成属性名称

时间:2011-04-18 17:25:27

标签: ruby-on-rails forms nested

我使用以下代码以rails(3.06)形式生成一组字段:

<% (1..5).each do |index| %>  
  <%= f.text_field "s"+index.to_s + "_incidence", :placeholder => "incidence", :value => number_to_percentage("s"+index.to_s + "_incidence", :precision => 0  ) %>                                                       
<% end %>

循环创建字段 - s0_incidence,s1_incidence,s2_incidence等,具体取决于项目中的请求数。因此,我不是重复每一行10次,而是使用循环来创建字段。

表单正确提交,但是对于现有记录,我想使用number_to_percentage公式填充:value。 number_to_percentage拒绝识别属性名称,因此单元格的内容看起来像“s0_incidence”而不是##%。

我做错了什么?我是否需要将*“s”+ index.to_s +“_incidence”*转换为符号以将其识别为:s0_incidence?

2 个答案:

答案 0 :(得分:2)

number_to_percentage想要一个号码。它对您的表单或模型一无所知,因此无法获取参数名称。

如果我正确理解你的请求模型,我认为你需要做

<% @project.requests.each_with_index do |request, index| %>
  <%= f.text_field "s#{index}_incidence", :placeholder => "incidence", :value => number_to_percentage(request.incidence, :precision => 0) %>
<% end %>

答案 1 :(得分:0)

想出来:

<% (1..5).each do |index| %>  
  <%= f.text_field "s"+index.to_s + "_incidence", :value => number_to_percentage(f.object["s"+index.to_s + "_incidence"], :precision => 0), :placeholder => "incidence" %>                                                       
<% end %>