Ruby on rails 路轨上的Ruby-在地图中使用分隔符。
我有下面的方法,Ruby on rails 路轨上的Ruby-在地图中使用分隔符。,ruby-on-rails,ruby,join,mapping,super,Ruby On Rails,Ruby,Join,Mapping,Super,我有下面的方法, def providers if super && super.any?(&:name) super.map(&:name).join(",<br>").html_safe else "--" end end 如果提供程序数组没有名称,那么我将得到--,这很好。如果所有元素都有名称,那么我会得到像name1、name2、name3这样的东西。那也很好。但是当我有一个有名字的提供者和一个没有名字的提供者时,
def providers
if super && super.any?(&:name)
super.map(&:name).join(",<br>").html_safe
else
"--"
end
end
如果提供程序
数组没有名称,那么我将得到--
,这很好。如果所有元素都有名称,那么我会得到像name1、name2、name3这样的东西。那也很好。但是当我有一个有名字的提供者和一个没有名字的提供者时,我会得到name1、
或、name2
。当我使用空元素进行连接时,如何去掉这些逗号。我如何构造逻辑。请帮忙
提前感谢使用可避免数组中出现任何零值
def providers
if super && super.any?(&:name)
super.map(&:name).compact.join(",<br>").html_safe
else
"--"
end
end
# Example
[ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
def提供程序
如果超级和超级有(&:名称)
super.map(&:name).compact.join(“,
”).html\u-safe
其他的
"--"
结束
结束
#范例
[“a”,无,“b”,无,“c”]。紧凑型!#=>[“a”、“b”、“c”]
我想你正在寻找这样的东西:
def providers
providers_with_names = super.keep_if {|p| p.name.present?}
if providers_with_names.any?
providers_with_names.map(&:name).join(",<br />").html_safe
else
"--"
end
end
def提供程序
providers_with_names=super.keep_if{| p | p.name.present?}
如果提供程序有名称,有吗?
提供程序\u与\u names.map(&:name.join(“,
”).html\u安全
其他的
"--"
结束
结束
我希望有帮助
def providers
providers_with_names = super.keep_if {|p| p.name.present?}
if providers_with_names.any?
providers_with_names.map(&:name).join(",<br />").html_safe
else
"--"
end
end