Изменить по умолчанию Rails text_area вспомогательные строки / столбцы - PullRequest
4 голосов
/ 15 сентября 2010

Я обнаружил, что определяю: row => 5 во всех моих помощниках формы text_area, поэтому я посмотрел его определение и обнаружил, что DEFAULT_TEXT_AREA_OPTIONS - это хеш, определяющий эти параметры.Тем не менее, в хэше есть этот метод замораживания, и я посмотрел его, это означает, что его нельзя изменить.Если бы вы могли порекомендовать мне несколько вариантов, чтобы попробовать сделать приложение для всего приложения: row => 5 для всей текстовой области, я был бы очень признателен.

Спасибо

Ответы [ 2 ]

6 голосов
/ 16 сентября 2010

Вы можете сделать:

  1. Написать собственного помощника:

    def readable_text_area (форма, метод, параметры = {}) form.text_area (метод, параметры) end

  2. или переопределите метод text_area, делегируя исходное text_area с соответствующими параметрами

  3. или расширьте ActionView :: Helpers :: InstanceTagMethods с помощью собственного метода "my_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 внутренних патча - рискованно.

2 голосов
/ 02 апреля 2012

Я фанат:

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

Как предупредил @gertas, это исправление внутренних компонентов, поэтому оно сопряжено с риском.Эти константы иногда перемещались в Rails.Но в целом это не огромная сделка.Либо:

  1. Вы используете CSS для ширины и высоты, поэтому эти атрибуты все равно игнорируются.В этом случае все, что вы делаете, это сохраняете несколько бесполезных символов для перемещения по экрану.Если он перестает работать, вы просто тратите несколько лишних символов, пока не заметите это.
  2. Вы используете эти атрибуты, поэтому, когда хак перестает работать, это становится очевидным (размер поля изменяется), и вы можете исправить это быстро.

Так что это идет с риском.Но не так много, и это самый простой способ настроить эти значения по умолчанию.

...