text_field rails form_with form_tag form_for ruby-on-rails forms form-for

ruby on rails - rails - Diferencia entre form_for y form_tag?



helpers rails (3)

Las diferencias son sutiles, pero importantes. form_for es una herramienta más avanzada que genera un objeto que usas para generar tus elementos de formulario:

<% form_for(@foo) do |form| %> <%= form.text_field(:bar) %> <% end %>

El método form_tag es mucho más primitivo y solo emite una etiqueta. Si quieres poner cosas dentro de la etiqueta <form> que se emite, pones cosas dentro del bloque:

<% form_tag do %> <%= text_field_tag(:bar, ''bar_value'') %> <% end %>

Tenga en cuenta que el método form_for maneja los valores de agarre de su modelo, y al menos intentará enrutar el formulario a la acción apropiada. Con form_tag usted es responsable de todo, ya que no hace suposiciones sobre lo que está haciendo.

Usé esta gema en mi aplicación, pero no estoy seguro de la diferencia entre las diferentes opciones de implementación para la gema:

  • form_for
  • form_tag con bloque
  • form_tag sin bloque

¿Alguien puede aclarar? Entiendo que form_for se usa cuando deseas interactuar con un modelo, pero ¿qué hay de los otros dos?


Por lo que sé, solo hay una diferencia simple. form_tag sin bloque solo generará un elemento html para usted. Cuando utiliza formulario con un bloque, también creará la etiqueta de cierre del formulario.

Por ejemplo:

<% form_tag("/comments") %>

resultará en

<form action="/comments">

Dónde

<%= form_tag("/comments") do %> <%= submit_tag %> <% end %>

Generará

<form action="/comments"> <input type="sumbit" /> </form>


Uno usa el modelo vinculante y el otro no