CSV导出失败

时间:2016-07-18 10:25:20

标签: csv ruby-on-rails-4

作为务实的方法,我有一个具有不同报告记录的报告模型。 "要求' csv'"在application.rb。

中设置

schema.rb:

numberOfItemsInSection

报告模型将作为生成CSV的通用解决方法。在我的 report.rb 中,我得到了以下信息:

create_table "reports", force: :cascade do |t|
 t.date     "start"
 t.date     "end"
 t.string   "brand"
 t.string   "team"
 t.datetime "created_at", null: false
 t.datetime "updated_at", null: false
end

def self.to_csv CSV.generate(headers: true) do |csv| csv << ["Order ID", "User ID", "User name" "Sale price"] Order.where("created_at between (?) and (?)", @report.start, @report.end).each do |order| order.sales.each do |sale| csv << [order.id, order.user_id, order.user_name, sale.price] end end end end @report.start由创建的记录定义。

当我为索引执行此操作并且不显示视图时,这实际上可以正常工作。

这是报告控制器

@report.end

这是在我的观看次数

def show
 @report = Report.find(params[:id])
 respond_to do |format|
   format.html
   format.csv { send_data @report.to_csv, filename: "report-#{Date.today}.csv"}
 end
end

我得到的只是:

  

ReportsController#show中的NoMethodError

     
    

未定义的方法`to_csv&#39; #Report:0x007fc86baa2360

  

来自我的控制器的这一行得到了突出显示:

<%= link_to report_path(@report, format: "csv"), class: "btn btn-default" do %> #report_path(params[:id], format: "csv") doesn't work either
 Export
<% end %>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

知道了。切换到&#34; .as_csv&#34;,而不是&#34; .to_csv&#34;。在我的report.rb模型中,我切换到def as_csv ... end并使用self.startself.end,...等等而不是@report.start,...

在我的观看中,我已将报告ID和格式传递给控制器​​:

<%= link_to report_path(@report.id, format: "csv") do %> ... <% end %>

希望将来帮助某人!