我正在尝试使用默认的脚手架索引页面并添加生成csv文件的功能。 (我也是一个新手,所以请保持简单的答案:)
我在csv文件上关注此railscast:http://railscasts.com/episodes/362-exporting-csv-and-excel
最终我让它为我工作,但我对它的工作原理有点困惑:)
具体来说,当我传递一个集合时,我对如何调用类方法感到困惑。
示例代码创建Products的集合,然后调用format.csv。
在这种情况下,看起来类方法被调用一次;它不会在集合的每个成员上调用(这是我在传递集合时所期望的)。这意味着类方法实际上必须创建自己的集合(或者你必须修改控制器以传入一个。)
// in controller
@products = Product.order(:name) # create a collection
respond_to do |format|
format.html
format.csv { render text: @products.to_csv }
end
// in Product model
def self.to_csv()
end
我发现以下代码更清晰,行为方式相同。
,而不是传递一个集合并且让魔术调用类方法Product.to_csv,而不是它// change the controller
respond_to do |format|
format.html { @products = Product.order(:name) }
format.csv { render text: Product.to_csv }
end
我想传入一个集合(和其他参数),所以我最后也修改了它。
// change the controller
format.csv { render text: Product.to_csv(Product.all) }
// change the model class method
def self.to_csv(collection)
end
任何人都可以解决这个问题吗?我假设rails尝试在没有该方法的集合上调用#to_csv,然后它在集合中的对象上调用该方法,然后它调用类本身的方法,最终有效吗?我不明白那个流程......
感谢