3

英語でごめんなさい。

私はあまりにも多くの場所にいて、関連するオブジェクトの値を表示します:

= post.category.name

また、このカテゴリはnullになる可能性があります(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('-')

Object#try

于 2013-01-07T18:30:58.623 に答える