Rails - 显示映射数组中每个项的子字符串

时间:2013-11-16 17:45:18

标签: ruby-on-rails arrays map ruby-on-rails-4 substring

我认为我有这个代码。

<%= matchset.games.map(&:name).join(', ') %>

它正在获取一系列game_ids并显示每个game_ids的名称。但是,我只想显示每个游戏名称的最后七个字符,而不是整个名称。

当它是从id到name映射的数组的一部分时,有没有办法获取名称的子字符串?

1 个答案:

答案 0 :(得分:1)

为了完整性,没有任何东西需要“一系列game_ids”,你正在使用游戏。

map后你得到一组名字,我认为这些名字是字符串,例如,

["Bartholemew", "Jimmy", "Johnathon"]

有两种琐碎的方法可以做你想做的事。

matchset.games.collect { |g| g.name[0..6] }.join(", ")

或者:

matchset.games.collect(&:name).collect { |n| n[0..6] }.join(", ")

第一次只循环一次,第二次循环两次。如果它是一个简短的集合,它可能并不重要。首先,需要花一点时间来理解发生的事情,因为你必须阅读代码才能理解你最终的名字。

将此操作放在装饰器中可能更有意义,因此视图层只能看到:

<%= matchset.truncated_names %>

或类似的东西。

根据发生的情况,您可能还会考虑使用pluck,但这是否有意义取决于您在页面上使用games的其他方式,如果您使用的话。