【问题标题】:Rails - Displaying a substring of each item in mapped arrayRails - 显示映射数组中每个项目的子字符串
【发布时间】:2013-11-16 17:45:17
【问题描述】:

我有这段代码。

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

它采用一组 game_ids 并显示每个游戏的名称。但是,我只想显示每个游戏名称的最后七个字符,而不是整个名称。

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

【问题讨论】:

  • 你不能只 #collect 名称子字符串吗?
  • 我对 Rails 很陌生,所以我不确定它是如何工作的。你能详细说明一下吗?

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


【解决方案1】:

为了完整起见,没有任何东西采用“游戏 ID 数组”,您正在处理游戏。

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 的其他方式,如果您使用的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2012-01-23
    • 2017-08-10
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多