[英]Ruby on Rails - conditional statement
我有以下方法
def providers
if super.present?
super.map(&:name).join("#{I18n.t('healtherecord_engine.shared.provider_name_separator')}<br>").html_safe
else
I18n.t('healtherecord_engine.data.no_data')
end
end
提供者具有以下模型架构
"providers": [
{
"name": "",
"relationship": ""
}
],
问题是,当提供程序的“名称”为空白并且“关系”为空时,它显示“无”-仅是空白。 我仍然希望它显示一个“-”(I18n.t('healtherecord_engine.data.no_data'))。
我尝试这样做
def providers
names = super.map(&:name).join("#{I18n.t('healtherecord_engine.shared.provider_name_separator')}<br>")
names.present? ? names.html_safe : I18n.t('healtherecord_engine.data.no_data')
end
仍然没有运气。 我在这里做错了什么? 谁能告诉我一些指导吗? 先感谢您
为避免混淆,I18n.t('healtherecord_engine.shared.provider_name_separator')=“,” I18n.t('healtherecord_engine.data.no_data')=“-”
更改:
if super.present?
至
if super && super.any?(&:name)
另请注意,多次调用超级可能很危险:
prov_hash = super
if prov_hash && prov_hash.any?(&:name)
它很有可能可以进一步优化,但这取决于超级方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.