0

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

<%= 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 之间的主要区别是什么?我更喜欢将选项 1 与<li>标签一起使用。我究竟做错了什么?

4

1 回答 1

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 %>

如果打印标签“成分”,那么您可以打印成分列表:

<td>Ingredients:</td>
<% @recipe.ingredients.each do |ingredient| %>
   <td><%= ingredient.name %></td>
<% end %>
于 2012-06-04T13:03:47.720 回答