2010-09-15 5 views
4

Je me trouve en train de spécifier: rows => 5 sur tous mes helpers de formulaire text_area, j'ai donc recherché sa définition et trouvé DEFAULT_TEXT_AREA_OPTIONS comme dicte dictant ces options. Cependant, le hachage a cette méthode de gel et je l'ai cherché, cela signifie qu'il ne peut pas être changé. Si vous pouviez me recommander quelques options pour essayer de faire un appl-wide: rows => 5 pour toute la zone de texte, je l'apprécierais vraiment.Changer les valeurs par défaut Rails text_area helper rows/cols

Merci

Répondre

6

Vous pouvez faire:

  1. Écrire son propre aide:

    def readable_text_area (forme, méthode, options = {}) form.text_area (méthode, options) fin

  2. ou de redéfinir la méthode text_area en déléguant à text_area d'origine avec les options appropriées

  3. ou d'étendre ActionView :: Helpers :: InstanceTagMethods avec votre propre méthode "my_text_area" et de déléguer à original text_area avec les options appropriées. Ensuite, vous pouvez utiliser "f.my_text_area (...)"

  4. ou changer DEFAULT_TEXT_AREA_OPTIONS:

.

module ActionView::Helpers::InstanceTagMethods 
    remove_const :DEFAULT_TEXT_AREA_OPTIONS 
    DEFAULT_TEXT_AREA_OPTIONS = { "cols" => 40, "rows" => 5 } 
end 

L'option 1 est la plus propre. 2 & 3 patch interface publique connue - semble acceptable. 4 patches internes - risqué.

+0

OH wow, merci pour ces réponses détaillées avec des facteurs de risque. Je vais aller avec (1). Merci! –

2

Je suis fan de:

class ActionView::Helpers::InstanceTag 
    silence_warnings do 
    DEFAULT_FIELD_OPTIONS = {} 
    DEFAULT_TEXT_AREA_OPTIONS = {} 
    end 
end 

Comme @gertas a averti cela il patcher internals est livré avec le risque. Ces constantes se sont déplacées de temps en temps dans Rails. Mais dans l'ensemble ce n'est pas une affaire énorme. Soit:

  1. Vous utilisez CSS pour la largeur et la hauteur, donc ces attributs sont ignorés de toute façon. Dans ce cas, tout ce que vous faites est de sauver quelques caractères inutiles de se déplacer à travers l'écran. Si cela ne fonctionne plus, vous n'avez qu'à dépenser quelques caractères supplémentaires jusqu'à ce que vous le remarquiez.
  2. Vous utilisez ces attributs, donc lorsque le hack cesse de fonctionner, il devient évident (la taille du champ change) et vous pouvez le réparer rapidement.

Donc il vient avec le risque. Mais pas beaucoup et c'est le moyen le plus simple d'ajuster ces valeurs par défaut.

+0

Salut Eric, merci de donner votre avis à ce sujet. Vous avez raison sur le risque d'être un risque n'est pas vraiment un. Et que j'utilise CSS pour dicter la largeur de toute façon. La raison pour laquelle je voulais utiliser l'attribut rows au lieu de straight of width est 1) Je n'aime pas CSS en général, mais c'est trivial, 2) définir les lignes ici me semble juste, car en tant qu'élément HTML, combien Je pense que les lignes devraient être dessinées là où elles sont définies/appelées. –

+0

Ces options par défaut seront supprimées de Rails, vous pouvez donc l'utiliser en toute sécurité. Voir https://github.com/rails/rails/issues/5324 –

Questions connexes