我正在使用axlsx_rails在应用程序中生成报告,并且我正在尝试使用此gem编写我的第一个(永远)报告。该报告允许用户为报告选择特定的马并将马及其相应的马驹输出到同一张纸上。只有一个表(Horse表)用于此目的。通过马ID向同一桌查询Dam_id(如果是母马)或Sire场(如果马是种马),可以找到马的小马驹。为简单起见,由于查询工作正常,我没有在确定母马或种马的代码中包含代码。
我成功将马输出到电子表格,但是虽然马驹是在控制器中生成的(我已经使用调试器来检查),但它们在工作表输出中无法被识别。
相关代码包括以下内容:
在index_by_horse_report.html.erb中,首先选择马,然后:
....
<%= link_to 'Download as horse_report.xlsx', index_by_horse_report_path(format: :xlsx ) %>
....
在控制器中:
def index_by_horse_report
@horses = Horse.find_by_sql ["SELECT horses.id.....WHERE horses.id = ? ", @horse_id]
@horses.each do |horse|
@foalings = Horse.find_by_sql ["SELECT horses.id...... WHERE horses.sire_id = ?", horse.id]
end
respond_to do |format|
format.html
format.xlsx {
response.headers['Content-Disposition'] = 'attachment; filename="horse_report.xlsx"'
}
end
end
查询返回1匹马和2匹马驹。
在index_by_horse_report.xlsx.axlsx中:
wb = xlsx_package.workbook
wb.add_worksheet(name: "Horse Report") do |sheet|
sheet.add_row ["NAME","REGISTRATION#1","REGISTRATION#2", "SIRE", "DAM", "FOALING DATE", "BREED", "Colour", "GENDER", "OWNER", "DATE ARRIVED", "DATE LEFT", "NOTES" ]
@horses.each do |horse|
sheet.add_row [horse.horse_name,horse.registration_number,horse.registration_number_2, horse.sire_name, horse.dam_name, horse.foaling_date, horse.breed_name, horse.colour_name, horse.gender_name, horse.owner, horse.arrival_date, horse.date_left, horse.notes ]
sheet.add_row [""]
sheet.add_row ["FOALINGS"]
sheet.add_row ["NAME","REGISTRATION#1","REGISTRATION#2", "SIRE", "SIRE/DAM", "FOALING DATE", "BREED", "Colour", "GENDER", "OWNER", "NOTES" ]
if @foulings
@foulings.each do |foul|
sheet.add_row[foul.horse_name, foul.registration_number....]
end
else
sheet.add_row ["NO FOALS"]
end
end
end
end
excel电子表格显示:
第一行:列标题, 第二行:选择的马的信息, 第三排:空 第四排:FOALINGS 第五排:小马驹标题 第六排:&#34; NO FOALS&#34;
可以提供任何帮助以帮助我发现为什么不打印小马驹信息的帮助将非常感激。
提前感谢你,
答案 0 :(得分:0)
谢谢Noel。
这简直太愚蠢了。这是不是犯规的驹。获得的经验:在做一些新的事情时,不要因为做一些新的事情而假设错误是由于复杂的原因 - 首先检查愚蠢的简单错误!