HAML отображает массив после #each - PullRequest
4 голосов
/ 03 марта 2011

У меня есть следующий HAML, который занял место индексной страницы лесов:

%h1 Listing Races

%table
  %tr
    %th Name
    %th Date
    %th Details
  ~@races.each 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

Когда страница отображается, таблицы распечатываются, как и ожидалось, но после этого также печатается массив @races; например:

[#<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">]

Я что-то делаю неправильно со структурой цикла в HAML, или что может вызвать рендеринг массива?

1 Ответ

14 голосов
/ 03 марта 2011

Тильда (~) выводит результат строки, которая является массивом, поскольку Array#each возвращает исходный массив. = и ~ действуют аналогично в этом смысле; ~, однако, сохраняет пробелы, которые = обычно удаляет.

Вы, вероятно, хотели использовать тире (-), которая выполняет код, но не выводит результат выражения.

См. Документы HAML для получения дополнительной информации:)

...