rails - 使用迭代打印文本

时间:2012-06-04 12:22:34

标签: ruby-on-rails ruby-on-rails-3

我正在尝试在我的页面中打印一个不可更新的值。 到目前为止它显示

<%= f.fields_for :ingredients do |builder| %>
 <fieldset>
    <%= builder.text_area :name %>
 </fieldset>
<% end %>

哪个有效,我需要它来显示不可更新的纯文本。所以我试着做了

选项1

<%= f.fields_for :ingredients do |builder| %>
 <fieldset>
    <%= builder.label :name, "Ingredients" %>
 </fieldset>
<% end %>

但没有成功。这确实有效: 选项2

<% @recipe.ingredients.each do |ingredient| %>
   <td><%= ingredient.name %></td>
<% end %>

选项1和2之间的主要区别是什么?我更喜欢使用带有<li>标记的选项1。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

标签用于为字段创建标签,而不是为了显示其值。选项2正是您显示名称字段内容的方式。选项1样式的格式是显示文字'成分'而不是'名称'。通常,这将是<%= builder.text_area :name %>

另一种可能的不一致:@ recipe.ingredients是一个数组,因此没有名为ingredients.name的字段。作为测试,尝试成分[0] .name。

所以在选项1中,尝试:

<% ingredient = @recipe.ingredients[0] %>
<%= f.fields_for :ingredient do |builder| %>
 <fieldset>
    <%= builder.label :name, "Ingredients" %>
 </fieldset>
<% end %>

如果打印出标签'Ingredients',那么您可以打印成分列表:

<td>Ingredients:</td>
<% @recipe.ingredients.each do |ingredient| %>
   <td><%= ingredient.name %></td>
<% end %>