ruby,如何使用AND& amp结构化if块要么

时间:2011-07-25 18:25:21

标签: ruby-on-rails ruby ruby-on-rails-3

现在我有以下内容:

<% if !@thread.nil? && @thread.name == 'X' || @thread.name == 'Y' %>
 ....

这里的问题是我相信无论是否@@thread.nil?,仍然会调用@ thread.name导致错误。

写这个的正确方法是这样的:

<% if !@thread.nil? && @thread.name == ('X' || 'Y') %>

列表中包含哪些类型?对于thread.name?

由于

4 个答案:

答案 0 :(得分:7)

if !@thread.nil? && ['x','Y'].include?(@thread.name)

答案 1 :(得分:4)

if @thread.present? and ['X', 'Y'].include?(@thread.name)

#present?上修改:More info

答案 2 :(得分:3)

try方法可以使这段代码更清晰。看一下这个http://everydayrails.com/2011/04/28/rails-try-method.html

答案 3 :(得分:3)

['x', 'Y'].include?(@thread.try(:name))

['x', 'Y'].include? @thread.try :name