我想在视图中写入单行if语句。Rails单行if else语句
<%= collection.name ? collection.name : @miniature.name %>
我想如果存在,它把collection.name,否则,我希望它把@ miniature.name
我想在视图中写入单行if语句。Rails单行if else语句
<%= collection.name ? collection.name : @miniature.name %>
我想如果存在,它把collection.name,否则,我希望它把@ miniature.name
为了使它更加清晰,你可以使用逻辑OR
和ActiveSupport's
Object#presence
(放collection.name
只有当它存在,并且不为空):
<%= collection.name.presence || @miniature.name %>
如果你想显示collection.name
如果不是nil
,但它是空白(空字符串或字符串续只有空白),它将足够具有:
<%= collection.name || @miniature.name %>
这似乎是一个非常优雅的做法。我没有意识到你可以使用那样的存在。 – Ossie
@WorldOfProper你可以,因为在对象为空的情况下,'presence'返回'nil',在任何逻辑语句中都被视为'false'。 –
什么是downvote为?请给予解释。 –
首先检查是否存在collection.name
。
<%= collection.name.present? ? collection.name : @miniature.name %>
三元运算符 - http://stackoverflow.com/questions/1428708/remembering-the-ternary-operator-syntax –
是的,我知道 - 我只是参考OP如果他想研究 –
'如果nil'不会抛出任何错误,它的行为完全像'如果错误'。 –
你不能有
<%= collection.name ||= @minature.name %>
对于那些谁downvoted - Set Ruby variable if it is not already defined
对不起,我正在写作一个对话 - 让我改变 –
我不明白。这不会做OP所期望的(显示'collection.name'或'@ miniature.name'),但会做OP所不期望的(如果@collection设置'collection.name'为'@ miniature.name' .name'是'nil')。 –
我相信我的回答提供了一个有效的答案OP –
什么是错的代码,你提供的? –