更改默认Rails text_area帮助程序行/列

Nik*_* So 4 ruby-on-rails helpers

我发现自己在所有text_area表单助手上都指定了:rows => 5,所以我查找了它的定义并发现DEFAULT_TEXT_AREA_OPTIONS是指示这些选项的哈希值.但是,散列上有这个冻结方法,我查了一下,这意味着它无法更改.如果您可以向我推荐一些选项来尝试在应用程序范围内执行:所有文本区域的rows => 5,我真的很感激.

谢谢

ger*_*tas 6

你可以做:

  1. 写自己的帮手:

    def readable_text_area(form,method,options = {})form.text_area(method,options)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
Run Code Online (Sandbox Code Playgroud)

选项1最干净.2&3补丁已知公共接口 - 似乎可以接受.4个补丁内部 - 有风险.