2011-03-03 3 views
5

je le HAML suivant écrit pour prendre la place d'une page d'index d'échafaudage:HAML rend tableau après #each

%h1 Listing Races 

%table 
    %tr 
    %th Name 
    %th Date 
    %th Details 
    [email protected] do |race| 
    %tr 
     %td= race.name 
     %td= race.date 
     %td= race.details 
     %td= link_to 'Show', race 
     %td= link_to 'Edit', edit_race_path(race) 
     %td= link_to 'Destroy', race, :confirm => 'Are you sure?', :method => :delete 
%br 
= link_to 'New Race', new_race_path 

Lorsque la page est affichée, les tables imprimées comme prévu, mais après, le tableau @races est également imprimé; par exemple:

[#<Race id: 1, name: "TestRace15", date: "2011-03-11 11:00:00", details: "Test Race to make sure that everything seems to wor...", created_at: "2011-03-03 00:16:09", updated_at: "2011-03-03 00:16:09">] 

Suis-je faire quelque chose mal avec la structure en boucle dans le HAML, ou ce qui serait l'origine du tableau à être rendu?

Répondre

14

Le tilde (~) renvoie le résultat de la ligne, qui est un tableau, car Array#each renvoie le tableau d'origine. = et ~ agissent de manière similaire dans ce sens; ~, cependant, préserve les espaces que = supprime habituellement.

Vous vouliez probablement utiliser le tiret (-), qui exécute le code mais ne renvoie pas le résultat de l'expression.

See the HAML docs for more :)

+1

C'était le problème. Merci pour l'aide! – ballpointcarrot