2010-11-10 8 views

Répondre

25

La méthode FormHelper est text_area, pas text_area_tag.

Utilisez une des opérations suivantes:

<%= f.text_area(:text, size: '50x10') %> 

ou:

<%= text_area_tag(:ad, :text, size: '50x10') %> 
+0

J'ai ce problème wrong number of arguments (3 for 2) maria

+0

@maria Lorsqu'elle est utilisée avec le générateur de formulaire, la méthode accepte uniquement deux arguments. Voir la mise à jour – meagar

5

La variable f que vous créez dans la première ligne est une référence à votre FormBuilder. Par défaut, il référence ActionView::Helpers::FormBuilder ou vous pouvez créer le vôtre.

L'assistant FormBuilder pour les zones de texte est appelé text_area. Les aides de FormBuilder sont plus intelligentes que les aides HTML classiques. Les modèles Rails peuvent être imbriqués logiquement, et vos formulaires peuvent être écrits pour refléter cela; L'une des principales choses que les assistants FormBuilder font est de garder une trace de la façon dont chaque champ particulier se rapporte à votre modèle de données.

Lorsque vous appelez f.text_area, depuis f est associée à une forme nommée :ad et le champ est nommé :text il va générer un champ nommé ad[text]. C'est une convention de paramètres qui sera automatiquement analysée dans un Hash sur le serveur: { :ad => { :text => "value" } } au lieu d'une liste de paramètres. Ceci est une grande commodité, car si vous avez un modèle nommé Ad, vous pouvez simplement appeler Ad.create(params[:ad]) et tous les champs seront remplis correctement.

text_area_tag est l'assistant générique qui n'est pas automatiquement connecté à un formulaire. Vous pouvez toujours faire faire les mêmes choses que FormBuilder#text_area, mais vous devez le faire manuellement. Cela peut être utile dans les situations dans lesquelles un assistant FormBuilder n'est pas prévu.