Ruby on rails 在ruby for循环中解析逗号

Ruby on rails 在ruby for循环中解析逗号,ruby-on-rails,ruby,loops,gsub,Ruby On Rails,Ruby,Loops,Gsub,所以我在我的ruby on rails应用程序中循环一个object for loop 目前代码如下: <%overlays.by_time.each do |overlay| %> { "content": "<a href=''><img src='<%= overlay.imageurl %>'></a>", start: <%=overlay.starttime %>, end: &l

所以我在我的ruby on rails应用程序中循环一个object for loop

目前代码如下:

<%overlays.by_time.each do |overlay| %>
  {
    "content": "<a href=''><img src='<%= overlay.imageurl %>'></a>",
     start: <%=overlay.starttime %>,
     end: <%=overlay.starttime %> + <%= overlay.duration %>,
     style: {<%=raw theme.contact_us_overlay_style %>},
     click_url: '<%= overlay.linkurl %>'
  },
<%end>

{
“内容”:“,
开始:,
完:+,,
样式:{},
单击url:“”
},

问题是逗号,它阻止我的videojs播放器运行。下一个覆盖内容需要逗号,但上一个内容不需要逗号,这是导致它的问题。如何在上一次对象迭代中删除它?

您有几种可能性。一个快速(但不是很优雅)的方法是检查物品是否是最新的

例如,您可以使用带有索引的每个\u

<% overlays.by_time.each_with_index do |overlay, index| %>
  {
    "content": "<a href=''><img src='<%= overlay.imageurl %>'></a>",
     start: <%=overlay.starttime %>,
     end: <%=overlay.starttime %> + <%= overlay.duration %>,
     style: {<%=raw theme.contact_us_overlay_style %>},
     click_url: '<%= overlay.linkurl %>'
  }<%= "," unless index == (overlays.length - 1) %>
<% end %>

你可以换个角度看。在每一项前加逗号。然后您只需要抑制第0个索引的逗号


{
“内容”:“,
开始:,
完:+,,
样式:{},
单击url:“”
}

先生,您是一位绅士和学者。我试着做一个gsub,但你的要简单得多。谢谢
def json_for_overlays(overlays)
  overlays.by_time.map do |overlay, index|
    <<-JS
    {
      content: <a href=""><img src="#{overlay.imageurl}"></a>,
      start: #{overlay.starttime},
      end: #{overlay.starttime} + #{overlay.duration},
      style: {#{raw(theme.contact_us_overlay_style)}},
      click_url: '#{overlay.linkurl}'
    }
    JS
  end.join(",")
end
<% overlays.by_time.each_with_index do |overlay, index| %>
  <%= "," unless index == 0 %>
  {
    "content": "<a href=''><img src='<%= overlay.imageurl %>'></a>",
     start: <%=overlay.starttime %>,
     end: <%=overlay.starttime %> + <%= overlay.duration %>,
     style: {<%=raw theme.contact_us_overlay_style %>},
     click_url: '<%= overlay.linkurl %>'
  }
<% end %>