做x.present的方式较短? ? x:z

时间:2013-11-20 23:12:50

标签: ruby-on-rails ruby

当我做类似的事情时,这真的开始变得重复和笨重:

Name: <%= @user.name.present? ? @user.name : "Unknown" %>

我知道我可以做@user.name || "Unknown"但据我所知,这不会处理空字符串。

是否有更短的方法?

2 个答案:

答案 0 :(得分:6)

<%= @user.name.presence || "Unknown" %>

来自Rails官方文档:

  

<强>存在()

     

如果存在,则返回对象?否则返回nil。 object.presence等同于object.present? ?对象:没有。

http://api.rubyonrails.org/classes/Object.html#method-i-presence

答案 1 :(得分:0)

您可以添加辅助方法

def view_name( user, default="Unknown" )
  user.name.present? ? @user.name : default
end

这样您的观点就是:

Name: <%= view_name( @user ) %>