【发布时间】:2014-05-05 05:28:29
【问题描述】:
我想从 Rails 导出一个 csv 文件,我正在关注 Railscast 关于这个主题的内容 (http://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicast)。
在 Railscast 中,控制器 (products_controller.rb) 包含:
def index
@products = Product.order(:name)
respond_to do |format|
format.html
format.csv { send_data @products.to_csv }
end
end
产品模型 (models/product.rb) 包含:
def self.to_csv
CSV.generate do |csv|
csv << column_names
all.each do |product|
csv << product.attributes.values_at(*column_names)
end
end
end
从这个 StackOverflow 问题 (Exporting CSV data from Rails) 中可以看出,to_csv 是在类对象数组上调用的类方法。我预计这会失败,因为 to_csv 没有在 Product 类上被调用。
这行得通,但为什么行得通?
【问题讨论】:
-
我不确定你的意思。自我是您的模型,产品在您的情况下。方法 .to_csv 是一个类方法。你在 Product 类上调用了 .to_csv 方法,你觉得哪一部分很奇怪?
-
对不起,我没有很清楚地表达我的困惑。我在控制器中期待
Product.to_csv(@products)而不是@products.to_csv之类的东西。
标签: ruby-on-rails ruby-on-rails-4 export-to-csv