用图像替换文本中的标签

时间:2017-03-28 09:51:56

标签: ruby-on-rails replace gsub

我有##imageset ##标签的文字,我想用实际的图像集图像替换(image_tag)。

这就是我的视图代码:

    <% @topictext = topic.text.gsub!(/##imageset##/).with_index { |iset,i| 

        if topic.topic_imagesets.includes(:imageset).order(:position)[i] then
           topic.topic_imagesets.includes(:imageset).order(:position)[i].imageset.imageset_pictures.order(:position).each do |pic|
              '<span>'+image_tag(pic.picture.image.thumb)+'</span>’
           end
        end
     } %>

    <%= @topictext.html_safe if @topictext %>

结果是,标签被| pic |替换这是ImagesetPictures的记录,而不是与实际imageset_pictures.picture image_tag的跨度:

...takimata sanctus est Lorem ipsum dolor sit amet. [#<ImagesetPicture id: 269, imageset_id: 46, picture_id: 280,...>, #<ImagesetPicture id: 268, imageset_id: 46, picture_id: 236,...>] Lorem ipsum dolor sit amet, consetetur ...

1 个答案:

答案 0 :(得分:0)

以下是我提出的解决方案:

<% @topictext = topic.text.gsub!(/##imageset##/).with_index { |iset,i|

  if topic.topic_imagesets.includes(:imageset).order(:position)[i] then
     topic.topic_imagesets.includes(:imageset).order(:position[i].imageset.imageset_pictures.order(:position).map{ |p|
        '<span>'+image_tag(p.picture.image_en.thumb)+'</span>'}.join("")

  end
} %>

<%= @toptext.html_safe if @toptext %>

可能不是最优雅的,但它对我来说很好。