列出具有不同数量元素的数组

时间:2013-04-20 23:26:18

标签: ruby-on-rails ruby

模型在我的Rails应用程序中的关联方式,如果我尝试列出用户拥有的许可证,并使用此代码

Licensed in <%= answer.user.licenses.map(&:state) %>

它会像这样打印出来

Licensed in ["New York"] 

由于它是一个数组,我可以像这样删除数组括号

<%= answer.user.licenses.map(&:state)[0] %>

我得到了我想要的结果

Licensed in New York

但是,如果用户拥有多个许可证(这是可能的),那么这不是一个好的解决方案,因为应该列出每个许可证。

因此,我尝试了这个

   <% answer.user.licenses.map(&:state).each do |state| %>
    <%= state %>
   <% end %>

但是,这不会在许可证之间添加“智能”逗号,聪明意思是“在必要时添加注释但不在最后添加注释”。

在这种情况下,代码应该是什么样才能实现我正在尝试做的事情。我不确定我应该谷歌的关键字来解决这个问题。

2 个答案:

答案 0 :(得分:4)

试试这个

answer.user.licenses.map(&:state).join(',')

这将在数组的每个元素之间添加,

答案 1 :(得分:4)

在Rails中,您可以使用to_sentence。这将在所有元素之间放置,,并将单词and放在倒数第二个和最终单词之间。