ruby-on-rails - rails - form_with textarea
Diferencia entre form_for, form_tag? (3)
¿Cuál es la diferencia entre form_for y form_tag? ¿Hay algo diferente para form_remote_for y form_remote_tag?
Deberías usar form_for para un modelo específico,
<% form_for @person do |f| %> # you can use f here
First name: <%= f.text_field :first_name %>
Last name : <%= f.text_field :last_name %>
<% end %>
Form_tag crea una forma básica
<%= form_tag ''/person'' do -%>
<%= text_field_tag "person", "first_name" %>
<% end -%>
Estos deberían ser similares:
<% form_for @person do |f| %>
<%= f.text_field :name %>
<% end %>
y:
<%= form_tag ''/person'' do %>
<%= text_field_tag "person[name]" %>
<% end %>
Si desea enviar los mismos parámetros al controlador, deberá definir esto de manera explícita.
form_for
prefiere, como su primer arg, un objeto activerecord; permite crear fácilmente un formulario de creación o edición (para usarlo en una vista "nueva" debe crear una instancia vacía en el controlador, como:
def new
@foo = Foo.new
end
También pasa una variable de formulario al bloque, para que no tenga que repetir el nombre del modelo dentro del formulario. es la forma preferida de escribir un formulario relacionado con el modelo.
form_tag
solo crea una etiqueta de formulario (y por supuesto prepara silenciosamente un campo oculto antiforgery, como form_for
); es mejor usarlo para formularios que no sean modelos (de hecho, solo lo uso para formularios de búsqueda simples o similares).
Del mismo modo, form_remote_for
y form_remote_tag
son adecuados para formularios relacionados con modelos y no para formularios relacionados con modelos, respectivamente, pero, en lugar de finalizar en un método http estándar (GET, POST ...), llaman a un método ajax.
Todo esto y mucho más están disponibles para que los disfrute en FormHelper y PrototypeHelper páginas de referencia.
EDITAR 2012-07-13
Prototype
ha sido eliminado de los rails
hace mucho tiempo, y las formas remotas han cambiado por completo. Consulte el primer enlace, con respecto a la opción :remote
de form_for
y form_tag
.