在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
?
答案 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