更改默认Rails text_area帮助程序行/列
我发现自己在所有text_area表单助手上都指定了:rows => 5,所以我查找了它的定义并发现DEFAULT_TEXT_AREA_OPTIONS是指示这些选项的哈希值。 但是,散列有这个冻结方法,我查了一下,这意味着它无法更改。 如果您可以向我推荐一些选项来尝试在应用程序范围内执行:所有文本区域的rows => 5,我真的很感激。
谢谢
你可以做:
-
写自己的帮手:
def readable_text_area(form,method,options = {})form.text_area(method,options)结束
-
或者重新定义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中移动。 但总的来说,这不是一个大问题。 或者:
- 您正在使用CSS作为宽度和高度,因此无论如何都会忽略这些属性。 在这种情况下,您所做的就是在屏幕上移动时保存一些无用的字符。 如果它停止工作,你只需花费一些额外的字符,直到你注意到它。
- 您正在使用这些属性,因此当黑客停止工作时,它变得明显(字段大小更改),您可以快速修复它。
所以它确实带来了风险。 但并不多,它是调整这些默认值的最直接方式。
- Rails质量分配定义和attr_accessible使用
- 虽然在佣金路线中有一条路线,但没有路线匹配
- Rails Concerns,Scopes,Devise,User.current和current_user
- rails 3 + devise:如何修改邮件方法以确认电子邮件添加用户的第二个电子邮件地址
- 嵌套资源路由助手无法正常工作
- Rails添加Twilio子帐户:未初始化的常量User :: Twilio
- 您的Ruby版本是1.9.3,但您的Gemfile指定为2.1.0
- 设计:密码重置电子邮件中的edit_password_url将用户发送到url / api / v1 /
- 当每个请求的app id和app secret不同时,请使用omniauth-facebook?