Iteracja wewnątrz stringu - można?

Witam, próbuję przeportować layout w którym pokazuję listę filmów oraz z tych samych danym chcę generować czas wyświetlania. Wydaje mi się że trochę przekombinowuję: najpierw generyję zmienne aby mieć posortowane te dane

class PagesController < ApplicationController
def index
@news = News.all
@movies = Movie.all.order("time ASC")
@kids, @drama, @action = [], [], []
@movies_array = [[], [], [], []]
@movies.each do |movie|
  case
  when movie.kids?
    @kids << movie
    when movie.drama?
      @drama << movie
    when movie.action?
      @action << movie
    end
  case
    when movie.date == Date.new(2018,8,5)
      @movies_array[0] << movie
    when movie.date == Date.new(2018,8,6)
      @movies_array[1] << movie
    when movie.date == Date.new(2018,8,7)
      @movies_array[2] << movie
    when movie.date == Date.new(2018,8,8)
      @movies_array[3] << movie
  end
end
end
end

a potem chce je generować - pierwsza cześć mi działa ale z drugą mam problem bo mam listę z 4 dniami i w każdym dniu są 3 filmy
więc najpierw zrobiłem view helper dla pojedyńczego elementu listy i iterowałem 4 razy dla kazdej zmiennej. Potem chciałem dla każdego dnia i się posypało.
moj plik html.erb

  <% @movies_array.each do |movies| %>
    <%= movies_list( movies ).html_safe %>
  <% end %>

view helper:

 def movie_list_item movie
"
<a href='#register' class='list-group-item list-group-item-action'>#{movie.title}<span class='badge badge-info badge-pill float-right'>#  {movie.time}</span></a>
"
end


def movies_list movies
"
<div class='col-md-3'>
  <div class='list-group'>
    <a href='#register' class='list-group-item list-group-item-primary'>" +
    movies[0].date.to_s +
    "</a>" +
    (movies.each do |movie| movie_list_item(movie) end)  +
  "</div>
</div>
"
end

teraz zwraca mi obiekty zamiast stringów w tej drugiej metodzie z odwołąnia do pierwszej metody:

, #<movie id:="" 5,="" title:="" "nebraska",="" image:="" "nebraska.jpe",="" genere:="" "drama",="" date:="" "2018-08-05",="" time:="" "2000-01-01="" 19:00:00",="" description:="" "elegant="" in="" its="" simplicity="" and="" poetic="" messag...",="" created_at:="" "2018-09-26="" 02:32:15",="" updated_at:="" 02:32:15"="">, #<movie id:="" 8,="" title:="" "world's="" end",="" image:="" "worlds_end.jpe",="" genere:="" "action",="" date:="" "2018-08-05",="" time:="" "2000-01-01="" 21:00:00",="" description:="" "madcap="" and="" heartfelt,="" edgar="" wright's="" apocalypse="" co...",="" created_at:="" "2018-09-26="" 02:32:15",="" updated_at:="" 02:32:15"="">]
  </movie></movie>   ,  #<movie id:="" 5,="" title:="" "nebraska",="" image:="" "nebraska.jpe",="" genere:="" "drama",="" date:="" "2018-08-05",="" time:="" "2000-01-01="" 19:00:00",="" description:="" "elegant="" in="" its="" simplicity="" and="" poetic="" messag...",="" created_at:="" "2018-09-26="" 02:32:15",="" updated_at:="" 02:32:15"="">, #<movie id:="" 8,="" title:="" "world's="" end",="" image:="" "worlds_end.jpe",="" genere:="" "action",="" date:="" "2018-08-05",="" time:="" "2000-01-01="" 21:00:00",="" description:="" "madcap="" and="" heartfelt,="" edgar="" wright's="" apocalypse="" co...",="" created_at:="" "2018-09-26="" 02:32:15",="" updated_at:="" 02:32:15"="">]
  </movie></movie>

A tak powinno wyglądać
bbf
github- branch z popsutą wersją, w trakcie testowania
ps. dodawanie obrazka mi nie działa :frowning:

Dałem radę:

#{(movies.map { |movie| movie_list_item(movie)}).join}

zamiast:

#{ movies.each do |movie| 
  movie_list_item(movie) 
end}

each jakoś nie chciało współpracować w żadnej wersji.

@dkuku pisanie w ten sposób helperów (łączenie stringów) to trochę hardkor. Lepiej byłoby zapewne jakieś partiale wydzielić a w helperze wywołać odpowiednio metodę render.

@radarek
Nie mam dużego doświadczenia z ror, odrobine więcej z reaktem i tam by mniej więcej tak to wyglądało (Komponenty) . A tutaj miałem całą statyczną strone w html i ją na kawałki ciąłem krok po kroku i się zatrzymałem. Chętnie poczytam jak to powinno wyglądać dokładnie używająć erb jeśli jesteś w stanie mnie na coś nakierować.
Wszystkie kursy railsów jakie przerobilem pokazują jak stylować standardowe komponenty - tutaj mam jeden widok tylko, a dane wymyśliłem sobie aby dodawać poprzez panel administratora.
Tak samo nie jestem pewny na temat tych operacji na listach w kontrolerze aby sobie te dane do wyświetlenia przygotować. W react-ie robiłby to komponent używają całej zmiennej @movies, tutaj musiałem kombinować i znając zycie gdzieś przekombinowuję jak zwykle :wink: