Ruby on Rails - 条件语句
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": ""
}
],
问题是,当提供者有一个空白 "name" 和一个 "relationship" 时,它显示 "nothing" - 只是一个空白。我仍然希望它显示“--”(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)
另请注意,多次调用 super 可能很危险:
prov_hash = super
if prov_hash && prov_hash.any?(&:name)
很有可能可以进一步优化,但这取决于超级方法。
我有以下方法
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": ""
}
],
问题是,当提供者有一个空白 "name" 和一个 "relationship" 时,它显示 "nothing" - 只是一个空白。我仍然希望它显示“--”(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)
另请注意,多次调用 super 可能很危险:
prov_hash = super
if prov_hash && prov_hash.any?(&:name)
很有可能可以进一步优化,但这取决于超级方法。