views:

63

answers:

1

Hello

I am finding myself specifying :rows => 5 on all my text_area form helpers, So I looked up its definition and found the DEFAULT_TEXT_AREA_OPTIONS to be the hash dictating these options. However, the hash has this freeze method on it and I looked it up, it means it can't be changed. If you could recommend me some options to try to do a app-wide :rows => 5 for all text area, I'd really appreciate it.

Thanks

+2  A: 

You can do:

  1. Write own helper:

    def readable_text_area(form, method, options = {}) form.text_area(method, options) end

  2. or redefine text_area method delegating to original text_area with proper options

  3. or extend ActionView::Helpers::InstanceTagMethods with your own method "my_text_area" and delegate to original text_area with proper options. Then you can use "f.my_text_area(...)"

  4. or change DEFAULT_TEXT_AREA_OPTIONS:

.

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

Option 1 is most clean. 2 & 3 patch known public interface - seems acceptable. 4 patches internals - risky.

gertas
OH wow, thanks for such detail answers with risk-factors. I'll go with (1). Thanks!
Nik