Как отобразить код erb внутри haml img src?

<% data.programs.client_name.each_with_index do |c, i| %>
   %article     
      .content 
         %header 
            .logo-wrap
               %img.client-logo{:src => "<%= data.programs.logo_url[i] %>", :alt => ""}/ 
        %div 
               %a{:href => ""} Program Title
               %p <%= c %>
        %p Some text description 
         %img.progam-photo{:src => "some_img_url", :alt => ""}/
<% end %>

Я использую функцию локальных данных Middleman, поэтому данные здесь берутся из файла yaml. Я просто не могу понять, как вывести ‹%= data.programs.logo_url[i] %> " на img.client-logo src. Так что этот процесс зацикливается.

Если я заменю %img.client-logo{:src => "‹%= data.programs.logo_url[i] %>", :alt => ""}/ на обычный тег img, я смогу правильно вывести источник

Это работает:

<% data.programs.client_name.each_with_index do |c, i| %>       
%article        
        .content 
        %header 
        .logo-wrap                  
            <img class="client-logo" src="<%= data.programs.logo_url[i] %>" />      
    %div 
        %a{:href => ""} Program Title
        %p <%= c %>
    %p <%= data.programs.program_description[i] %>
    <img class="program-photo" src="<%= data.programs.img_url[i] %>" />     
<% end %>

person clydealegro    schedule 19.04.2013    source источник


Ответы (1)


%img.client-logo{:src => data.programs.logo_url[i], :alt => ""}/ 

возможные оговорки:

  • data.programs.client_name - это массив?
  • Ваш код правильно идентифицирован?
  • если вы замените тег %img на = data.programs.logo_url[i] у вас есть ссылка?

В теге haml нет ничего плохого. Это доказывает:

[fotanus@thing ~]$ cat a.haml 
- a = []
- a << 'image/path'
%img{:src => a[0]}

[fotanus@thing ~]$ haml a.haml 
<img src='image/path' />
person fotanus    schedule 19.04.2013
comment
неопределенная локальная переменная или метод `i' - person clydealegro; 19.04.2013
comment
@clydealegro извините, я не понял вашего вопроса. Каков результат, который вы ожидаете в HTML? Каково содержание data.programs.logo_url? как i не определен, если он используется в качестве индекса в верхнем цикле? - person fotanus; 19.04.2013
comment
‹%= data.programs.logo_url[i] %› должен выводить строку URL. работает если вот так ‹img src=‹%= data.programs.logo_url[i] %››, только не понимаю почему не работает в формате haml - person clydealegro; 19.04.2013
comment
<img src="<%= data.programs.logo_url[i] %>"> должно быть эквивалентно %img{:src => data.programs.logo_url[i]} и = image_tag data.programs.logo_url[i]. Отредактировал ответ с возможными оговорками. - person fotanus; 19.04.2013
comment
если он работает с этим форматом ‹img src=‹%= data.programs.logo_url[i] %››, поэтому я не думаю, что есть проблема с получением переменной i. Есть ли какая-то интерполяция, которую мне нужно сделать, если это формат haml? - person clydealegro; 19.04.2013
comment
@clydealegro отредактировал мой ответ, доказав, что это не проблема тега haml. - person fotanus; 19.04.2013
comment
data.programs.client_name — это массив. Я думаю, что мой код имеет правильный отступ для структуры haml. я получаю, что я не определен, когда я изменил %img на = data.programs.logo_url[i] - person clydealegro; 19.04.2013