我正在尝试在我的页面中打印一个不可更新的值。 到目前为止它显示
<%= 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。我究竟做错了什么?
答案 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 %>