我有一个API类,它就像这样订购:
class APIDocument
...
def order
@order = []
@document.template.order.split('_').each do |o|
@order << o unless o.to_sym == ''
end
@order
end
...
end
在其中一种情况下, o.to_sym
等于''
,但o
仍会添加到数组中。有什么想法吗?
@document.template.order => 'photo_info_disclaimer'
api = APIDocument.new(@document)
api.photo => ''
api.order => ['photo', 'info', 'disclaimer']
任何帮助都会很棒。
答案 0 :(得分:2)
你确定吗?我假设
o.to_sym
在其中一个案例中等于''
o
是String
,在这种情况下,to_sym
将始终生成Symbol
。这意味着o.to_sym
永远不会等于空String
(''
)。
也许你正在寻找这些方面的东西:
@orders = @document.template.order.split('_').delete_if { |s| s.empty? }
答案 1 :(得分:0)
@order << o unless o.to_sym == :''
''.class => String
:''.class => Symbol
答案 2 :(得分:0)
啊,感谢@August,这很有效:
def order
@order = @document.template.order.split('_').delete_if { |o| self.send(o).blank? }
end