我在页面上显示记录列表,每条记录都有几个子类别。我正在以略小和轻的字体显示记录的标题及其下方的相关类别。
出于某种原因,当显示类别时,将返回括号。这是从has_many:through关系生成的,因此返回一个数组。
以下是视图中的haml:
= location.services.map {|service| service.name }
以下是向用户显示的结果:
["Plumbing", "House Repair", "Lawn Care"]
请注意,它会被格式化为数组!我的最终用户不希望看到格式化为哈希或数组的数据。
你认为发生了什么原因吗?!
答案 0 :(得分:3)
这种情况正在发生,因为map会在结果中返回一个数组。由于您不想向用户显示数组,因此可以在返回的数组上使用join
函数。
1.9.3-p429 :011 > res = ["Plumbing", "House Repair", "Lawn Care"]
1.9.3-p429 :013 > res.join(', ')
=> "Plumbing, House Repair, Lawn Care"
所以你可以这样做:
location.services.map {|service| service.name }.join(', ')
或者,您还可以浏览导航的to_sentence,这将为您提供更友好的输出:
location.services.map {|service| service.name }.to_sentence
# returns: Plumbing, House Repair and Lawn Care