我正在尝试在数组创建中执行if语句
markers_index = Array.new
@events.each_with_index do |event, index|
...
markers_index << {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [event.longitude, event.latitude]
},
properties: {
markerurl: event.photo.marker.url,
divclass: marker_class,
if has_popup
popupContent: marker_popup
end
}
}
end
但这会引发语法错误
意外的':',需要keyword_end popupContent:'marker_popup'
是错别字还是我根本做不到,需要重复整个包裹过程,如果没有,则包裹我的marker_index变量?试图保持干燥。
答案 0 :(得分:4)
例如:
h= {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [event.longitude, event.latitude]
},
properties: {
markerurl: event.photo.marker.url,
divclass: marker_class,
}
}
if has_popup
h[:properties][:popupContent]= marker_popup
end
markers_index << h
答案 1 :(得分:1)
h= {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [event.longitude, event.latitude]
},
properties: {
markerurl: event.photo.marker.url,
divclass: marker_class,
}.tap { |g| g[:popupContent] = marker_popup if has_popup }
}
请参见Object#tap。
答案 2 :(得分:0)
除了像其他人提到的那样,在创建哈希之后执行if条件操作,如果语句的评估结果为true,则也只能填充哈希Key / Val对的值。然后,您只需使用三元运算符测试值是否为nil,即可稍后对其执行操作/不对其进行操作(条件?如果为true:如果为false):
Symfony 3.4