在HAML和Rails中编写for-each循环

7

我有一个类似这样的HAML:

- @my_patients_list.each do |patient|
  %tr
    %td= patient.name
    %td= patient.date_of_birth
    %td= patient.gender
    %td= patient.brand_name.name
    %td= patient.generics[0].name

请注意这行代码 %td= patient.generics[0].name。我在作弊,只打印第一个通用名,但是每个病人可以有多个通用名。所以需要另一个 for-each loop 来处理这部分。不过我刚开始使用这个 HAML,还不太习惯。有没有人能帮忙写出需要用 HAML 格式的额外循环,这样我就可以将其替换为 patient.generics[0].name?大概让我们用逗号将他们的通用名分开吧。

2个回答

14
假设泛型是一个字符串数组,您想按新的 td 分隔 ...
- @my_patients_list.each do |patient|
  %tr
    %td= patient.name
    %td= patient.date_of_birth
    %td= patient.gender
    %td= patient.brand_name.name
    - patient.generics.each do |gen|
       %td= gen.name
否则,如果你只想用逗号进行分隔...
- @my_patients_list.each do |patient|
      %tr
        %td= patient.name
        %td= patient.date_of_birth
        %td= patient.gender
        %td= patient.brand_name.name
        %td= patient.generics.map(&:name).join(',')  

这将创建具有不同数量的td元素的表行,这可能不是您想要的。 - matt
是的,他在我回答后更改了问题。我进行了编辑以反映新的问题。 - Bagzli

5

如果您想用逗号分隔泛型名称,可以尝试这个:

- @my_patients_list.each do |patient|
  %tr
    %td= patient.name
    %td= patient.date_of_birth
    %td= patient.gender
    %td= patient.brand_name.name
    %td= patient.generics.map(&:name).join(',')           

它将打印所有相关的通用名称,用逗号分隔。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接