我有一个共同的视图,列出了两个不同的模型。唯一的区别是,在设置link_to
操作时,其中一个模型具有link
属性而另一个不具有link
属性。我想检查%li
- if @element.has_attribute?("link") && @element.link
= link_to @element.title, @element.link
- else
= link_to @element.title, @element
属性是否存在,如果存在,请检查它是否已设置。我有以下工作,但我想知道是否有更好的方法。
{{1}}
答案 0 :(得分:31)
您可以使用presence
:
= link_to @element.title, (@element.link.presence || @element)
或者,如果@element
可能根本没有link
,您可以使用try
:
= link_to @element.title, (@element.try(:link) || @element)
答案 1 :(得分:14)
我相信你可以做@element.attribute?
(例如@element.link?
)
(我想我们可以把它称为“魔法属性”。)
检查
正是你想要的。
答案 2 :(得分:7)
尝试使用属性哈希。此哈希将返回所有activerecord对象属性的key => value
映射。
if @element.attributes['link']
# Here we are
else
# default
end