1

SO中有很多关于rails中的csv导出的问题,但我没有找到解决我的问题的问题。我正在尝试在我的 rails 应用程序中导出模型的所有实例,并且我正在关注Ryan Bates 的 RailsCast #362,但现在我遇到了生成的 CSV 的问题。

这是我在模型控制器中的索引操作(@bookstore在另一个操作中设置,在 a 中使用before_filter):

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

我在 Book Class ( 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 几乎没有经验。谢谢!

4

3 回答 3

2

我遇到了同样的问题。我发现我的类方法 to_csv 甚至没有被调用。我可以删除它并获得相同的输出。

我通过重新启动服务器“解决”了这个问题。在那之后, to_csv 开始被正确调用,并且事情正常进行。

railscast 第 362 集确实提到了重新启动服务器,但没有明确说明代码在您这样做之前将无法工作。

一旦我们重新启动服务器以便它获取 csv 库,我们应该能够查看我们的 CSV 数据。

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

于 2013-06-26T04:06:59.270 回答
0

在 railscast 中,它说:

format.csv { send_data @products.to_csv }

你为什么不这样做?

如果这不起作用,您能否尝试@books使用以下代码收集您的对象?我很感兴趣它是否会有所作为:

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

它不应该,但你似乎以某种方式得到了一系列,@books.each {|b| array << b.to_s}我很好奇为什么。

于 2013-03-08T14:21:43.190 回答
0

有同样的问题,按照这个评论,它现在可以工作了

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

于 2014-01-10T18:38:12.513 回答