在轨数据导出为CSV(railscasts#362)(Exporting data to csv i

2019-10-17 19:33发布

有在SO有关CSV出口在轨了很多问题,但我没有找到一个解决我的问题。 我想一个模型的所有实例导出我的Rails应用程序,我是继Ryan Bates的RailsCast#362 ,但现在我在与生成CSV问题。

这是在模型控制器(我的索引行动@bookstore是建立在另一个行动,在使用before_filter ):

def index
  @books = @bookstore.books
  respond_to do |format|
    format.html
    format.csv { render text: @books.to_csv }
  end
end

而且我在书类(此方法book.rb ):

def self.to_csv
  CSV.generate do |csv|
    csv << column_names
    all.each do |book|
      csv << book.attributes.values_at(*column_names)
    end
  end
end

问题是,当我尝试打开/bookstores/1/books.csv我得到这样的:

#<Book:0x007f7f755252a0>,#<Book:0x007f7f75524c38>,#<Book:0x007f7f755245f8>,#<Book:0x007f7f75523fe0>,#<Book:0x007f7f75523978>,#<Book:0x007f7f75523130>,#<Book:0x007f7f755227d0>,#<Book:0x007f7f75522190>,#<Book:0x007f7f75521b78>,#<Book:0x007f7f7552c2f8>

我不知道什么是错的,并与Ruby on Rails的一点经验。 谢谢!

Answer 1:

在railscast,它说:

format.csv { send_data @products.to_csv }

你为什么不这样做呢?

如果还是不行,请您尝试收集你的@books下面的代码对象? 我感兴趣是否会有所作为:

Book.where(:bookstore_id => @bookstore.id)

它不应该,但你似乎得到数组@books.each {|b| array << b.to_s} @books.each {|b| array << b.to_s}不知何故,我很好奇,为什么。



Answer 2:

我有同样的问题。 我想通了,我的类方法to_csv甚至没有得到调用。 我可以删除它,得到的结果相同。

我重新启动我的服务器“解决”这个问题。 在那之后,to_csv开始得到正确调用和工作的事情应该像他们。

该railscast插曲362未提到重新启动服务器,但不说清楚,代码不会工作,直到你做。

一旦我们重新启动服务器,这样就拿起CSV库,我们应该能够看到我们的CSV数据。

[railscast插曲362] http://railscasts.com/episodes/362-exporting-csv-and-excel



Answer 3:

有同样的问题,其次此评论和现在的工作

http://railscasts.com/episodes/362-exporting-csv-and-excel?view=comments#comment_162272



文章来源: Exporting data to csv in rails (railscasts #362)