2017-03-28 4 views
0

Ich habe einen Text mit ## imageset ## Tags, die ich mit den eigentlichen Imageset-Bildern (image_tag) ersetzen möchte.Tags im Text mit Bildern ersetzen

Dies ist, was meiner Ansicht nach Code wie folgt aussieht:

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

Das Ergebnis ist, dass die Tags durch ersetzt | pic | Welches sind die Aufzeichnungen der ImagesetPictures und nicht die Spanne mit dem tatsächlichen 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 ... 

Antwort

0

Hier ist die Lösung kam ich mit:

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

Wahrscheinlich nicht das eleganteste, aber es funktioniert gut für mich.