form_for
の@product
ヘルパーが多くの機能を備えています。
:product
は、入力フィールドのIDと名前にのみ影響します。
<%= form_for :product, :url => {...} do |f| %>
<%= f.text_field :price %>
<% end %>
生成されたHTMLは次のようになります:
<input type="text" id="product_price" name="product[price]" />
id
とname
値は:product.to_s
とテキストフィールド名によって決定されますたとえば、フォームで提出されたテキストを持っています。
あなたが@product
を使用する場合のURLは@product
の状況に応じて決定されるため、:url
は必要ありませんが:
@product
が新しいレコードである場合、URLはcreate
に投稿します
- そうでない場合は、URLが
update
に投稿するだろうし、入力の提出IDと名前が@product
のCLの影響を受けていますお尻の名前なので、単一のテーブルの継承を使用している場合は重要です。入力フィールドの値は、@product
の属性値で自動的に割り当てられます。あなたが@product
を使用するのであれば、HTML出力は次のようになります。
<input type="text" id="item_price" name="item[price]" value="some value" />
そしてもちろん、あなたが使用することができます。
<input type="text" id="product_price" name="product[price]" value="some value" />
@product
のクラス名がItem
で、出力はに変化するであろうと想定し:product
と@product
の両方:
<%= form_for :product, @product do |f| %>
提出:product
制御入力の名前とID、および@product
はURLと入力フィールドの値を制御します。
:製品は 'form_for'が生成するURLにも影響します。 –
ええ、私は ':url'を代入せずにシンボル引数を使うことはありません。実際にはシンボルはほとんど使われません。 – Kevin
'form_for(:product、...)'を使用すると、 '@ product'の値が入力されたテキストフィールドが表示されます。ただし、選択ボックスはデフォルト値を取得します(最初のオプション)。何が間違っているかも考えていますか?こちらもご覧ください:http://stackoverflow.com/questions/4436267/ruby-on-rails-why-a-select-box-does-not-show-the-current-object-value –