我认为我有这个代码。
<%= matchset.games.map(&:name).join(', ') %>
它正在获取一系列game_ids并显示每个game_ids的名称。但是,我只想显示每个游戏名称的最后七个字符,而不是整个名称。
当它是从id到name映射的数组的一部分时,有没有办法获取名称的子字符串?
答案 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
的其他方式,如果您使用的话。