在rails中导出数据为csv (railscasts #362)



在SO中有很多关于rails中csv导出的问题,但我没有找到一个解决我的问题。我试图导出一个模型的所有实例在我的rails应用程序,我是按照瑞安贝茨的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类(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

问题是,当我试图打开/书店/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也没什么经验。谢谢!

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

我通过重新启动服务器"解决"了这个问题。在此之后,to_csv开始被正确调用,一切正常工作。

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

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

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

在railcast中,它说:

format.csv { send_data @products.to_csv }

你为什么不那么做呢?

如果这不起作用,请尝试用以下代码收集您的@books对象?我想知道这是否会有影响。

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

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

有同样的问题,遵循这个注释,现在可以工作了

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

相关内容

  • 没有找到相关文章

最新更新