2012-07-29 2 views
8

У меня есть этот each цикл: (Haml)Каждая петля Haml?

- @deals.each do |a| 
    .slide 
     %a{:href => "#"} 
     - a.attachments.each do |a| 
      = image_tag(a.file.url, :height =>"325px", :width =>"650px") 
      .caption{:style => "bottom:0"} 
       = a.description 

Поскольку @deals объединяют запрос из 3 таблиц (модели) я использую polymorphic_path для генерации ссылки изображений.

- @deals.each do |a| 
    .slide 
     %a{:href => "#"} 
     - a.attachments.each do |a| 
      = image_tag(a.file.url, :height =>"325px", :width =>"650px"), polymorphic_path(@region, @city, a) 
      .caption{:style => "bottom:0"} 
       = a.description 

Но это вызывает region_city_attachment_path, что является неправильным. В первой каждой петле a переменная хранит правильное значение, но как может быть reach первая переменная a во втором цикле each?

ответ

13

Просто дайте ему другое имя.

- @deals.each do |a| 
    .slide 
     %a{:href => "#"} 
     - a.attachments.each do |b| 
      = image_tag(a.file.url, :height =>"325px", :width =>"650px"), polymorphic_path(@region, @city, b) 
      .caption{:style => "bottom:0"} 
       = a.description 
1

Просто не используйте одно и то же имя для них обоих, и все будет хорошо.

13

вы должны быть более ясным при использовании имен переменных, сделать что-то вроде

- @deals.each do |deal| 
    .slide 
    %a{:href => "#"} 
     - deal.attachments.each do |attachment| 
     .. 

это очень плохая практика, чтобы использовать такие имена, как «а»/«Ъ»/«х», когда вы может написать гораздо более читаемый код

Смежные вопросы