2017-03-28 66 views
0

我有一個## 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 %> 

結果是,該標籤被替換|圖片|這是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 ... 

回答

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 %> 

可能不是最優雅,但它對我來說工作得很好。