4

すべての text_area フォーム ヘルパーで :rows => 5 を指定していることに気付いたので、その定義を調べたところ、DEFAULT_TEXT_AREA_OPTIONS がこれらのオプションを指示するハッシュであることがわかりました。ただし、ハッシュにはこのフリーズメソッドがあり、調べたところ、変更できないことを意味します。すべてのテキスト領域に対してアプリ全体の :rows => 5 を実行するためのいくつかのオプションをお勧めできれば、本当に感謝しています。

ありがとう

4

2 に答える 2

6

できるよ:

  1. 独自のヘルパーを書く:

    def readable_text_area(フォーム、メソッド、オプション = {}) form.text_area(メソッド、オプション) end

  2. または、適切なオプションを使用して元の text_area に委譲する text_area メソッドを再定義します

  3. または独自のメソッド「my_text_area」で ActionView::Helpers::InstanceTagMethods を拡張し、適切なオプションで元の text_area にデリゲートします。次に、「f.my_text_area(...)」を使用できます

  4. または、DEFAULT_TEXT_AREA_OPTIONS を変更します。

.

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

オプション 1 が最もクリーンです。2 & 3 パッチ既知のパブリック インターフェイス - 許容できるようです。4 つのパッチの内部 - 危険です。

于 2010-09-15T21:36:53.423 に答える
2

私は次のファンです:

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

@gertas が警告したように、これは内部にパッチを適用しているため、リスクが伴います。これらの定数は、時々 Rails 内を移動しています。しかし、全体としては大したことではありません。また:

  1. 幅と高さに CSS を使用しているため、これらの属性は無視されます。その場合、あなたがしているのは、画面を横切って移動するいくつかの役に立たない文字を保存することだけです. 機能しなくなった場合は、それに気付くまで、数文字余分に費やすだけです。
  2. これらの属性を使用しているため、ハックが機能しなくなったときにそれが明らかになり (フィールド サイズが変化)、すぐに修正できます。

したがって、リスクが伴います。しかし、それほど多くはなく、これらのデフォルトを調整する最も簡単な方法です.

于 2012-04-02T01:59:21.913 に答える