78 votes

Différence entre form_for , form_tag?

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?

62voto

ez. Points 3836

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 -%>

53voto

giorgian Points 2754

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X