Quelle est la différence entre form_for et form_tag? Est quelque chose de différent pour form_remote_for et form_remote_tag?
Réponses
Trop de publicités?Vous utilisez form_for pour un modèle spécifique,
<% 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 créer un formulaire de base,
<% form_tag '/person' do -%>
<%= text_field_tag "person", "first_name" %>
<% end -%>
form_for
préfère, sa première arg, un activerecord objet; il permet de faire facilement de créer ou de modifier la forme (de l'utiliser dans un "nouveau" point de vue, vous devez créer un vide d'instance dans le contrôleur, comme:
def new
@foo = Foo.new
end
Il passe aussi une forme de variable dans le bloc, de sorte que vous n'avez pas à répéter le nom du modèle dans le formulaire lui-même. c'est la meilleure façon d'écrire un modèle de formulaire.
form_tag
crée une balise de formulaire (et bien sûr en silence préparer un antiforgery champ caché, comme form_for
); il est préférable de l'utiliser pour les non-modèle des formulaires (en fait, je l'utilise uniquement pour de simples formulaires de recherche ou similaire).
De même, form_remote_for
et form_remote_tag
sont adapté pour modèle les formes et pas des modèles liés à des formes respectivement, mais, au lieu de mettre fin à une norme de méthode http (GET, POST...), ils font appel à une méthode ajax.
Tout cela, et bien plus encore sont disponibles pour vous de profiter dans la FormHelper et PrototypeHelper pages de référence.
EDIT 2012-07-13
Prototype
a été retiré de l' rails
il y a longtemps, et à distance formes ont complètement changé. Veuillez consulter le premier lien, avec reguard à l' :remote
possibilité d' form_for
et form_tag
.