9

Rails ビューでtryは、データベースに値がある場合にのみ出力するために使用できます。

@model.try(:date)

たとえば、出力が文字列として必要な場合は、試行を連鎖させることができます

@model.try(:date).try(:to_s)

しかし、スコープ指定された形式を呼び出す必要がある場合はどうすればよいでしょうか? 私はもう試した

@model.try(:date).try(:to_s(:long))
@model.try(:date).try(:to_s).try(:long)

これの正しい構文は何ですか? そして、より多くの説明のための良い参考文献は何ですか?

ありがとう

4

3 に答える 3

15

細かいマニュアルから:

try(*a, &b)
[...]
try試行中のメソッドの引数および/またはブロックも受け入れます

Person.try(:find, 1)

だから私はあなたが欲しいと思う:

@model.try(:date).try(:to_s, :long)

これは機能しません:

@model.try(:date).try(:to_s(:long))

:to_sメソッドとしてシンボルにアクセスしようとしているからです( :to_s(:long))。これは機能しません:

@model.try(:date).try(:to_s).try(:long)

long戻り値でメソッドを呼び出そうとしていて、おそらくメソッドが定義されto_sていないためです。String#long

于 2012-04-28T04:14:45.473 に答える