这是我们的字符串:
string = 'project_manager, foreman, buyer'
我们希望将其转换为这样的2D数组:
[[I18n.t(' project_manager'),' project_manager'],[I18n.t('领班'),'领班&# 39;],[I18n.t('买家'),'买家']]
2D阵列将被送入rails视图并创建一个下拉列表供选择。如果指定了除英语之外的其他语言,则I18n.t()用于翻译单词。
非常感谢!
答案 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'方法删除字符串周围的所有空格(如果存在)。
希望有所帮助:)