我发现自己指定:rows => 5我所有的text_area表单助手,所以我查找了它的定义,发现DEFAULT_TEXT_AREA_OPTIONS是指示这些选项的哈希值。但是,散列上有这个冻结方法,我查了一下,这意味着它无法更改。如果您可以向我推荐一些尝试在应用范围内进行操作的选项:rows => 5对于所有文本区域,我真的很感激。
由于
答案 0 :(得分:6)
你可以这样做:
写自己的帮手:
def readable_text_area(form,method,options = {}) form.text_area(方法,选项) 端
或重新定义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个内部补丁 - 有风险。
答案 1 :(得分:2)
我是粉丝:
class ActionView::Helpers::InstanceTag
silence_warnings do
DEFAULT_FIELD_OPTIONS = {}
DEFAULT_TEXT_AREA_OPTIONS = {}
end
end
正如@gertas所警告的那样,这是修补内部因素,因此存在风险。这些常量偶尔在Rails中移动。但总的来说,这不是一个大问题。之一:
因此确实存在风险。但并不多,而且它是调整这些默认值的最直接方式。