Haml的每个循环?

时间:2012-07-29 22:04:16

标签: ruby-on-rails ruby-on-rails-3 haml

我有这个each循环:( 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变量?

3 个答案:

答案 0 :(得分:14)

请给它另一个名字。

- @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|
        ..
使用诸如“a”/“b”/“x”这样的名称是一种非常糟糕的做法,当你可以编写更易读的代码时

答案 2 :(得分:1)

只是不要为它们使用相同的名称,一切都会好起来。