Ruby on rails 钢轨吸气剂装饰
我有一个从模型中访问attibutes的视图 其中一些将是布尔值,我希望显示为“是”或“否”。我在模型类中编写了一些代码来实现这一点: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
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来测试它;)