我正在尝试采用默认的脚手架索引页面并添加生成 csv 文件的功能。(我也是新手,所以请保持答案简单:)
我在 csv 文件上关注这个 railscast:http ://railscasts.com/episodes/362-exporting-csv-and-excel
最终我让它为我工作,但我对它为什么工作有点困惑:)
具体来说,当我将一个集合传递给它时,我对如何调用类方法感到困惑。
示例代码创建一个产品集合,然后调用 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,然后它在集合中的一个对象上调用该方法,然后它在最终有效的类本身上调用该方法?没看懂这个流...
谢谢