Как бы вы конвертировали это многострочное фиаско в HAML? - PullRequest
2 голосов
/ 24 февраля 2012

Я не могу полностью обдумать это.

Оригинал:

<%=
Shasta::CSV.generate do |csv|
  csv << ["Customer", "Job Name", "Payment Date", "Amount", "Notes"]

  for payment in @payments
    csv << [
      payment.customer.name,
      payment.jobs.map(&:name).join(" "),
      I18n.l(payment.created_at, :format => :short_date),
      number_to_currency(payment.amount),
      payment.notes
    ]
  end
end.html_safe
%>

HTML2HAML Преобразовал его в это, но он терпит неудачу

= Shasta::CSV.generate do |csv|                                        |
    csv << ["Customer", "Job Name", "Payment Date", "Amount", "Notes"] |
    for payment in @payments                                           |
      csv << [                                                         |
        payment.customer.name,                                         |
        payment.jobs.map(&:name).join(" "),                            |
        I18n.l(payment.created_at, :format => :short_date),            |
        number_to_currency(payment.amount),                            |
        payment.notes                                                  |
      ]                                                                |
    end                                                                |
  end.html_safe                                                        |

1 Ответ

6 голосов
/ 24 февраля 2012

Это не совсем ответ на ваш вопрос, но сложно писать многострочные операторы haml, поэтому вам, вероятно, следует переместить его в помощник.

= some_descriptive_method_name @payments

def some_descriptive_method_name(payments)
  Shasta::CSV.generate do |csv|
    csv << ["Customer", "Job Name", "Payment Date", "Amount", "Notes"]

    payments.each do |payment|
      csv << [
        payment.customer.name,
        payment.jobs.map(&:name).join(" "),
        I18n.l(payment.created_at, :format => :short_date),
        number_to_currency(payment.amount),
        payment.notes
      ]
    end
  end.html_safe
end
...