我无法完全理解这一点。
原始
<%=
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 |
答案 0 :(得分:6)
这不完全是你问题的答案,但编写多行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