El @product
en el form_for
ayudante se envía con más funciones.
El :product
solo afecta la identificación y el nombre del campo de entrada. Por ejemplo, usted tiene un texto presentado en la forma:
<%= form_for :product, :url => {...} do |f| %>
<%= f.text_field :price %>
<% end %>
el código HTML generado se vería así:
<input type="text" id="product_price" name="product[price]" />
El valor id
y name
está determinada por la :product.to_s
y el nombre del campo de texto.
Mientras que si se utiliza @product
, la :url
no es necesario porque la url se determina de acuerdo con la @product
's de estado:
- si el
@product
es un nuevo registro, el URL sería enviar a create
- lo contrario, la URL sería colocar a
update
y la entrada de Identificación presentada y el nombre se ve afectada por @product
's cl nombre del asno, por lo que es importante cuando está usando la tabla única heredante. El valor del archivo de entrada se asigna automáticamente con el valor de atributo @product
.Así que si usa @product
, la salida HTML se vería así:
<input type="text" id="product_price" name="product[price]" value="some value" />
Asumir nombre de la clase del @product
's es Item
, entonces la salida cambiaría a:
<input type="text" id="item_price" name="item[price]" value="some value" />
Y, por supuesto, puede utilizar ambos :product
y @product
:
<%= form_for :product, @product do |f| %>
La entrada :product
controles presentada el nombre y la identificación, y el @product
controla el valor del campo url y de entrada.
: el producto también afecta a la URL que genera 'form_for'. –
Sí, pero nunca utilizo un argumento de símbolo sin asignar el ': url'. En realidad, el símbolo rara vez se usa solo. – Kevin
Cuando uso 'form_for (: product, ...)' Veo los campos de texto rellenos con los valores de '@ product'. Sin embargo, los cuadros de selección obtienen los valores predeterminados (la primera opción). ¿Tienes alguna idea de lo que puede estar mal? Vea también aquí: http://stackoverflow.com/questions/4436267/ruby-on-rails-why-a-select-box-does-not-show-the-current-object-value –