在Rails视图中检查nil字符串

jn2*_*098 4 ruby ruby-on-rails ruby-on-rails-3

我正在为我的Rails视图中的Nil检查寻找一个好的快捷方式.我已经看到了关于此的其他问题,但似乎没有人像我想的那样简化这一点.我想要的是一个简短的语法,""如果特定值为nil则返回空字符串,否则返回该值.

有一个建议,在这里,我是倾向于尝试.它基本上允许这样的语句:

user.photo._?.url
Run Code Online (Sandbox Code Playgroud)

- 要么 -

user.photo.url._?
Run Code Online (Sandbox Code Playgroud)

这是一个好主意还是充满危险?

我的另一个选择是在我的模型上处理nils,但这看起来太全局了.

Kul*_*ini 5

您应该检查try在对象上运行提供的方法的方法,如果有问题的对象不是nil则返回值.否则它只会返回零.

# We have a user model with name field
u = User.first

# case 1 : u is not nil
u.try(:name)
=> Foo Bar

# case 2 : u is nil
u.try(:name)
=> nil

# in your case
user.photo.try(:url)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看此博客文章.