Ruby on rails 将对象的Activerecord数组转换为逗号分隔字符串
假设我有一个名为“Fruit”的模型,一个查询将所有不同的水果名称返回给@Fruit:Ruby on rails 将对象的Activerecord数组转换为逗号分隔字符串,ruby-on-rails,Ruby On Rails,假设我有一个名为“Fruit”的模型,一个查询将所有不同的水果名称返回给@Fruit: !!ruby/object:水果属性: 水果名称:橙色属性\u缓存:{} !!ruby/object:水果属性: 水果名称:苹果属性\u缓存:{} !!ruby/object:水果属性: 水果名称:桃子属性\u缓存:{} 我知道@fruit是一个由数组(activerecord对象)组成的数组。我试图将返回的水果名称转换成逗号分隔的字符串,例如:“橙色、苹果、桃子” 如果数组是由字符串或数字(而不是数组)
- !!ruby/object:水果属性: 水果名称:橙色属性\u缓存:{}
- !!ruby/object:水果属性: 水果名称:苹果属性\u缓存:{}
- !!ruby/object:水果属性: 水果名称:桃子属性\u缓存:{}
@fruit_string = @fruit.map { |f| f.fruit_name }.join ','
现在,当一个块由一个没有参数的方法调用组成时,出于某种复杂的原因,您可以这样编写它
@fruit_string = @fruit.map(&:fruit_name).join ','
1.一元&运算符将过程转换为块,并将块转换为过程。如果操作数两者都不是,则它首先调用_proc(如果可以)。(是的,符号有一个to_proc。)它甚至比这更复杂,但这就是为什么它是对map的一个很好的简洁补充。或者使用proc缩写:
@fruit_string = @fruit.map(&:fruit_name).join(',')
我会使用下面的速记版本