Ruby的IF是否更短?

时间:2019-05-12 19:50:48

标签: ruby-on-rails ruby

我有一些代码:

<%= name ? name : 'no name' %>

因此它会打印名称,如果没有名称,则会打印“ no name”。 由于我仍然必须写两次变量名,所以我想知道是否还有更短的方法?

如果变量,则打印它,否则打​​印其他内容。

1 个答案:

答案 0 :(得分:3)

是的,有。试试这个

<%= name.presence || 'no name' %>

如果name为空,则该表达式的值为'no name',否则为name的值。

请注意,presence是rails方法。

正如某人指出的那样,如果仅在'no name'name(或nil,即使可能不是这种情况)下打印false,就足够了

<%= name || 'no name' %>

否则,即使'no name'是空白字符串,如果您也想打印name,我的原始答案就可以解决问题