3

对不起我的英语不好。

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

= post.category.name

并且这个类别可能是空的(在 Ruby 中是 nil)。在 Django 中有default过滤器,它的工作成本是任何未知变量都变为 None (nil),我们可以设置默认值。

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

我想编写一个捕获异常并返回的助手,—post.category.name在将其传递给助手之前计算该值(原则上是合乎逻辑的)。

一般来说,我想在这里制作以下代码:

= post.category.nil? ? raw ('-'): post.category.name

以更方便的形式,像这样

= mdash(post.category.name)

谢谢!

4

1 回答 1

2

那么这个而不是三元运算符呢?

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

对象#try

于 2013-01-07T18:30:58.623 回答