【问题标题】:Is it possible to define a constant in an eRuby template in Rails是否可以在 Rails 的 eRuby 模板中定义常量
【发布时间】:2011-05-17 07:27:00
【问题描述】:

由于我讨厌使用不说明其意图的布尔文字调用方法,因此我尝试在我的 eruby 模板中定义一个常量,如下所示:<% NO_NIL_PADDING = false %> 用于调用 in_groups_of。但是,这会导致 动态常量分配 错误。有什么办法可以解决这个问题?我可能可以在环境中的某个地方定义常量,但是 atm 我更愿意让常量定义尽可能接近它的用法,直到开始有必要将其定义移动到更高级别。

【问题讨论】:

    标签: ruby-on-rails ruby eruby


    【解决方案1】:

    我不知道您在模板中还做了什么可能导致它,但只是设置常量对我有用:

    ruby-1.8.7-p249 > template = ERB.new "<% DONT_SET_CONSTANTS_IN_VIEWS = false %>"
     => #<ERB:0x100485890 @src="_erbout = '';  DONT_SET_CONSTANTS_IN_VIEWS = false ; _erbout", @filename=nil, @safe_level=nil> 
    ruby-1.8.7-p249 > template.result(binding)
     => "" 
    

    不过,我强烈建议不要这样做。作为一个在去年继承了很多代码的人,你正在为自己和潜在的其他人带来严重的头痛。这样的选项实际上可能会根据业务逻辑而改变吗?我会尝试选择一个理智的默认值并使用它。如果它没有在其他任何地方使用,为什么要创建一个常量?

    【讨论】:

    • 我只想写这个@some_list.in_groups_of(2, NO_NIL_PADDING)而不是@some_list.in_groups_of(2, false)
    • 我会在初始化程序中为自己创建一个类,其中包含此类选项的常量。这样一来,您始终知道该去哪里更改它并保持可维护性,并且您绕过了动态常量分配问题。
    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多