从循环中的最后一个元素中删除逗号

时间:2015-05-23 11:04:07

标签: jquery css ruby ruby-on-rails-4

在rails应用视图中,我输出的数据来自以逗号分隔的数组。如何从最后一个元素中删除逗号?我能做到:

html = ""
answer.first.selected_answers.each do |sa|
  if answer.first.selected_answers[-1] == sa
    html << content_tag(:span, "#{sa.possible_answer.text}", class: 'answer')
  else
    html << content_tag(:span, "#{sa.possible_answer.text}, ", class: 'answer')
  end
end
html.html_safe

有更优雅的方式吗?也许使用JQuery?或者是CSS last-child

3 个答案:

答案 0 :(得分:2)

也许您可以使用join方法。

例如:

[1,2,3,4,5,6,7].join(", ").split(" ")
=> ["1,", "2,", "3,", "4,", "5,", "6,", "7"]

对于您的代码,也许可以这样写:

answer.first.selected_answers.map { |sa| sa.possible_answer.text }.join(", ").split(" ")
      .map{ |t| content_tag(:span, t, class: 'answer') }

答案 1 :(得分:0)

如果我理解这个问题,就没有必要做任何不同的事情。如果你担心有一个尾随逗号,它将使用String.split(&#39;,&#39;)方法处理。

irb(main):001:0> str = '1,2,3,4,'
=> "1,2,3,4,"
irb(main):002:0> arr = str.split(',')
=> ["1", "2", "3", "4"]

数组不识别逗号是重要的,它是一个复合数据类型,是其他数据类型的集合。所以输出将元素连接在一起。

irb(main):004:0> arr.join(', ')
=> "1, 2, 3, 4"

答案 2 :(得分:0)

join方法使用给定参数连接数组中的所有元素,在这种情况下(逗号后跟空格)并返回一个长字符串,例如'a, b'。请注意,最后一个元素('b')后面没有逗号和空格。 split方法将字符串转换为元素数组,例如['a, ', 'b']。再次注意第一个元素是如何包含逗号后跟空格的。第二个映射使用rails helper content_tag遍历数组,为每个元素提供一些html代码。内容标记附加到html变量以在视图中显示。

answer.first.selected_answers.map { |sa| sa.possible_answer.text }.join(", ").split("").map do |t| 
  html << content_tag(:span, t, class: 'answer') 
end