如何将字符串拆分为2D数组并将运算符应用于rails 3.2中的数组元素?

时间:2014-10-13 19:14:02

标签: ruby-on-rails ruby arrays

这是我们的字符串:

string = 'project_manager, foreman, buyer'

我们希望将其转换为这样的2D数组:

[[I18n.t(' project_manager'),' project_manager'],[I18n.t('领班'),'领班&# 39;],[I18n.t('买家'),'买家']]

2D阵列将被送入rails视图并创建一个下拉列表供选择。如果指定了除英语之外的其他语言,则I18n.t()用于翻译单词。

非常感谢!

2 个答案:

答案 0 :(得分:4)

按照以下步骤操作,先按squishing,然后字符串拆分为Array,然后在其上使用Array#map方法。

string = 'project_manager, foreman, buyer'
string.squish.split(',').map { |elem| [I18n.t(elem), elem] }

在Rails控制台中尝试: -

arup@linux-wzza:~/Rails/model_prac> rails c
Loading development environment (Rails 4.1.4)
2.1.2 :001 > "   tr  ".squish
 => "tr"
2.1.2 :002 > string = 'project_manager, foreman, buyer'
 => "project_manager, foreman, buyer"
2.1.2 :003 > string.squish.split(',').map { |elem| [I18n.t(elem), elem] }
 => [["translation missing: en.project_manager", "project_manager"], ["translation missing: en. foreman", " foreman"], ["translation missing: en. buyer", " buyer"]]
2.1.2 :004 >

答案 1 :(得分:1)

string = 'project_manager, foreman, buyer'
string.split(",").map{|x| [  I18n.t(x.strip)   ,  x.strip  ] }

split(",")方法返回数组(子字符串拆分为分隔符","),

["project_manager", " foreman", " buyer"]

map方法迭代上面数组的每个元素,将每个元素映射到计算并从块返回的新元素,最后返回带有新元素的新数组。在我们的例子中,新元素本身就是数组,因此我们得到了一个2D数组。

最后,' strip'方法删除字符串周围的所有空格(如果存在)。

希望有所帮助:)