我发现自己在我的所有 text_area 表单助手上指定了 :rows => 5,所以我查看了它的定义,发现 DEFAULT_TEXT_AREA_OPTIONS 是指示这些选项的哈希。但是,哈希上有这个冻结方法,我查了一下,这意味着它无法更改。如果您可以向我推荐一些选项来尝试为所有文本区域执行应用程序范围的 :rows => 5,我将非常感激。
谢谢
我发现自己在我的所有 text_area 表单助手上指定了 :rows => 5,所以我查看了它的定义,发现 DEFAULT_TEXT_AREA_OPTIONS 是指示这些选项的哈希。但是,哈希上有这个冻结方法,我查了一下,这意味着它无法更改。如果您可以向我推荐一些选项来尝试为所有文本区域执行应用程序范围的 :rows => 5,我将非常感激。
谢谢
你可以做:
编写自己的助手:
def readable_text_area(form, method, options = {}) form.text_area(method, options) end
或使用适当的选项重新定义委派给原始 text_area 的 text_area 方法
或使用您自己的方法“my_text_area”扩展 ActionView::Helpers::InstanceTagMethods 并使用适当的选项委托给原始 text_area。然后你可以使用“f.my_text_area(...)”
或更改 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 个补丁内部 - 有风险。
我是:
class ActionView::Helpers::InstanceTag
silence_warnings do
DEFAULT_FIELD_OPTIONS = {}
DEFAULT_TEXT_AREA_OPTIONS = {}
end
end
正如@gertas 警告的那样,这是在修补内部结构,因此存在风险。这些常量偶尔会在 Rails 中移动。但总的来说,这并不是什么大问题。任何一个:
所以它确实伴随着风险。但不多,它是调整这些默认值的最直接的方法。