2013-01-07 27 views
3

对不起,我的英语。Ruby on Rails助手:如果无,则显示mdash

我在太多的地方是,显示相关对象的值:

= post.category.name 

而这个类别可以为null(在Ruby中无)。在Django中有default过滤器,其工作开支为任何未知变量变为None(无),我们可以设置默认值。

在Rails中,在这种情况下会出现异常NoMethodError,因为我们试图访问不存在的类别名称的含义。

我想写一个帮助程序来捕获异常并返回—,但post.category.name值是在将它传递给帮助程序(原则上为逻辑)之前计算的。

一般情况下,我想在这里提出的是下面的代码:

= post.category.nil? ? raw ('-'): post.category.name 
更方便的形式

,这样

= mdash(post.category.name) 

谢谢!

回答

1

这是什么而不是三元运算符?

post.category.try(:name) || raw('-') 

Object#try