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 の主な違いは何ですか? <li>タグでオプション 1 を使用することをお勧めします。私は何を間違っていますか?

4

1 に答える 1

1

Label は、フィールドのラベルを作成するために使用され、その値を表示するためのものではありません。オプション 2 は、名前フィールドの内容を表示する方法とまったく同じです。オプション 1 の書式設定スタイルは、「名前」の代わりにリテラルの「成分」を表示することです。通常、その後に<%= builder.text_area :name %>.

もう 1 つの矛盾の可能性: @recipe.ingredients は配列であるため、 components.name というフィールドがありません。テストとして、 components[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 %>
于 2012-06-04T13:03:47.720 に答える