Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 钢轨吸气剂装饰_Ruby On Rails_Getter - Fatal编程技术网

Ruby on rails 钢轨吸气剂装饰

Ruby on rails 钢轨吸气剂装饰,ruby-on-rails,getter,Ruby On Rails,Getter,我有一个从模型中访问attibutes的视图 其中一些将是布尔值,我希望显示为“是”或“否”。我在模型类中编写了一些代码来实现这一点: def getter_decorator(attr) var = read_attribute(attr) if !!var == var boolean_as_string(var) else var end end def boolean_as_string(bool_type) if bool_type

我有一个从模型中访问attibutes的视图

其中一些将是布尔值,我希望显示为“是”或“否”。我在模型类中编写了一些代码来实现这一点:

def getter_decorator(attr)
  var = read_attribute(attr)
  if !!var == var
    boolean_as_string(var)
  else
    var
  end
end

def boolean_as_string(bool_type)
    if bool_type
      "Yes"
    else
      "No"
    end
end
所以我可以这样做:

对于我知道的所有属性都是布尔或getter_decorator。我的问题是,有没有一种方法可以装饰我所有的getter,这样在我这样做时就可以调用这个函数
@检查表.签署条件

为什么不重写getter或创建一个新的getter

def sign_condition
  self.sign_condition == true ? "Yes" : "No"
end
如果这会导致冲突(您必须测试并查看),请使用稍微不同的名称执行相同的操作

def sign_state
  self.sign_condition == true ? "Yes" : "No"
end

为什么不重写getter或创建一个新的getter呢

def sign_condition
  self.sign_condition == true ? "Yes" : "No"
end
如果这会导致冲突(您必须测试并查看),请使用稍微不同的名称执行相同的操作

def sign_state
  self.sign_condition == true ? "Yes" : "No"
end

我建议将此作为一种辅助方法,因为它仅用于演示。这也将使将来当您的站点在国际上起飞时更容易将其本地化

def yn(val)
  val ? "Yes" : "No"
  # localized: I18n.t (val ? "Yes" : "No")
end
然后在您的视图中使用它:

<%= yn @checklist.sign_condition %>

但是,我不建议这样做;)

我建议将此作为一种辅助方法,因为它仅用于演示。这也将使将来当您的站点在国际上起飞时更容易将其本地化

def yn(val)
  val ? "Yes" : "No"
  # localized: I18n.t (val ? "Yes" : "No")
end
然后在您的视图中使用它:

<%= yn @checklist.sign_condition %>

但是,我不建议;)

对不起,我应该解释一下,其中有20个以上,我觉得很懒!是的,尝试重写sign\u条件方法,该方法应该优先于model属性,这样您就可以告诉它返回Yes或No,而不是True或False。您可以只编写
sign\u条件?:“否”:“否”“
对不起,我应该解释一下,这里有20多个,我觉得很懒!是的,尝试重写sign_条件方法,该方法应该优先于model属性,这样您可以告诉它返回Yes或No而不是True或False。您可以只编写
sign_条件吗?“是”:“否”
对于monkeypatching,您需要
classtrueclass;def to_;'是的;结束
类假类;def to_;'不",;结束
。但是,是的,这可能是一个相当干净的解决方案。接得好!我只是用true来测试它;)对于monkeypatching,您需要
classtrueclass;def to_;'是的;结束
类假类;def to_;'不",;结束
。但是,是的,这可能是一个相当干净的解决方案。接得好!我只是用true来测试它;)