2010-08-26 4 views
14

Y at-il un moyen de spécifier une valeur à la méthode text_area qui sera placé entre les balises générées textarea?RoR valeur de consigne pour textarea

Voici un exemple du code que je utilise.

<% remote_form_for ... do |f| %> 
     <%= f.text_area :message %> 
     <%= f.submit 'Update' %> 
<% end %> 

Répondre

19
<% remote_form_for ... do |f| %> 
     <%= f.text_area :message, :value => "my default value" %> 
     <%= f.submit 'Update' %> 
<% end %> 
4

Le procédé FormHelper text_area prend un second argument pour spécifier la méthode qui retourne le corps d'une zone de texte.

De la documentation liée ci-dessus:

text_area(:post, :body, :cols => 20, :rows => 40) 
    # => <textarea cols="20" rows="40" id="post_body" name="post[body]"> 
    #  #{@post.body} 
    # </textarea> 

    text_area(:comment, :text, :size => "20x30") 
    # => <textarea cols="20" rows="30" id="comment_text" name="comment[text]"> 
    #  #{@comment.text} 
    # </textarea> 

    text_area(:application, :notes, :cols => 40, :rows => 15, :class => 'app_input') 
    # => <textarea cols="40" rows="15" id="application_notes" name="application[notes]" class="app_input"> 
    #  #{@application.notes} 
    # </textarea> 

    text_area(:entry, :body, :size => "20x20", :disabled => 'disabled') 
    # => <textarea cols="20" rows="20" id="entry_body" name="entry[body]" disabled="disabled"> 
    #  #{@entry.body} 
    # </textarea> 
+0

Donc, je voudrais écrire une méthode dans un contrôleur qui renvoie le corps de la zone de texte? – Brian

+0

@Brian Non, votre modèle devrait gérer cela. Par exemple, en utilisant la méthode: text, invoquerait la méthode 'text' sur votre modèle de message, en supposant que @message contienne une instance de votre modèle. Comme vous pouvez le voir dans l'exemple, 'text_area (: poste,: corps)' invoque la méthode '@ post.body' –

+1

Eh bien, j'ai ajouté une méthode pour mon modèle comme si def texte_par_défaut « testing » fin Puis <% =: message,: texte_par_défaut%> Mais l'erreur suivante « méthode non définie fusion » pour: texte_par_défaut: Symbole » – Brian

6

Vous devez utiliser l'attribut HTML 'espace réservé' pour montrer les textes par défaut dans les champs HTML. C'est tout le but de cet attribut. La façon de l'utiliser dans ROR est: -

<%= f.text_area :message, :placeholder => "my default value" %> 
+0

C'est ce que je cherchais, merci! – Laser

+1

Cela placera l'espace réservé dans la zone de texte, mais il ne peut pas être soumis en tant que paramètre lorsque le formulaire est soumis –