在下面的代码中,我想为每次迭代为文本字段分配一个不同的标签。
<%= f.field_for :skills do |s| %>
<li>
<label>Skills</label>
<%= s.text_field :name %>
</li>
<% end %>
我该怎么做? 这是我的控制器代码,我在其中创建了三个不同的技能对象:
def edit
3.times{resource.skills.build}
render_with_scope :edit
end
答案 0 :(得分:1)
你可以这样做:
<% counter = 0 %>
<%= f.fields_for :skills do |s| %>
<li>
<%= s.label :name, "Skill #{counter}" %>
<%= s.text_field :name %>
<% counter = counter + 1 %>
</li>
<% end %>
最好使用s.label :name
,因为这样可以确保在单击标签时,文本框将获得焦点。但是标签的价值可以被推翻,就像我在这里所做的那样。
我不太清楚改变每件商品的标签还有什么意义,所以如果你能做得更清楚的话。
希望这有帮助。
答案 1 :(得分:0)
只需将标签范围限定为s
:
<%= f.field_for :skills do |s| %>
<li>
<%= s.label :name, 'Skills' %>
<%= s.text_field :name %>
</li>
<% end %>
我认为应该这样做。