我有一组事件对象。每个事件都有一个名为location的哈希,其中包含名称,地址,州,城市,邮政编码等密钥。但是并非所有位置都有这些键。我只想显示键的值,如果它们在那里。这是我的代码
@events.each do |event|
if !event.location.empty?
puts "Location: #{event.location[:name]}, #{event.location[:address]}, #{event.location[:city]}, #{event.location[:state]}, #{event.location[:zipcode]}"
end
end
如果我有一个完整的地址,这可以正常工作。但是,如果我只有它所显示的位置的名称
Location: Central Park, , , ,
如何摆脱那些多余的逗号?有时它可能是2或3个尾随逗号。我知道如何摆脱一个,但如果没有设置尾随逗号的数量,我不知道该怎么做。希望将位置信息显示在一行上。
任何帮助将不胜感激。
答案 0 :(得分:5)
我会做这样的事情:
@events.each do |event|
values = event.location.values_at(:name, :address, :city, :state, :zipcode).compact
puts "Location: #{values.join(', ')}" unless values.empty?
end
或者您可能想要在Event
课程中添加方法。
def stringified_location
values = location.values_at(:name, :address, :city, :state, :zipcode).compact
values.join(', ') unless values.empty?
end
并称之为:
@events.each do |event|
stringified_location = event.stringified_location
puts "Location: #{stringified_location}") if stringified_location
end
答案 1 :(得分:0)
您可以使用public signup(request: Hapi.Request, reply: Hapi.Base_Reply) {
this.database.user.create(request.payload).then((user: any) => {
return reply({
"success": true
});
}).catch((err) => {
reply(Boom.conflict('User with the given details already exists'));
});
}
获取哈希值,然后使用.values
将其合并为具有相应分隔符的字符串:
.join(", ")
答案 2 :(得分:0)
您可以使用值创建一个数组,然后将它们连接起来:
@events.each do |event|
if !event.location.empty?
puts "Location: #{[event.location[:name], event.location[:address], event.location[:city]}, event.location[:state], event.location[:zipcode]].compact.join(', ')}"
end
end
答案 3 :(得分:0)
一种可能性就是将值放在数组中然后加入它们。
@events.each do |event|
if !event.location.empty?
location = [event.location[:name], event.location[:address], event.location[:city], event.location[:state], event.location[:zipcode]]
location -= [nil] #remove empty elements
puts "Location: #{location.join(', ')}"
end
end