如何使用Rails 3将模型导出到CSV文件?

时间:2015-06-25 10:35:18

标签: ruby-on-rails ruby ruby-on-rails-3 csv

我想使用Rails 3.2将所有数据库条目导出到csv中。我一直在关注these指示:

我的控制器: 编辑:我已经从类方法更改为实例方法

...
elsif params[:reference] == 'exportnews'
  @data = News.find(:all, :order => "date_posted desc", :conditions => "#{Settings.show} = 1", :limit => "5")
  respond_to do |format|
    format.html { redirect_to root_url }
    format.csv { send_data @data.to_csv }
  end
else
...

我的模特:

  class News < ActiveRecord::Base
      attr_accessible :content, :date_posted, :heading, :hidden, :reference, :title, :user
      def to_csv(options = {})
          CSV.generate(options) do |csv|
            csv << column_names
            all.each do |product|
              csv << product.attributes.values_at(*column_names).map(&:to_csv)
            end
          end
        end
    end

当我访问指定的网址时(我已在config/routes.rb创建了一条路线,我收到了一个csv文件,其中包含以下详细信息:

#<News:0x007fef657d69f8> #<News:0x007fef632b95a8> #<News:0x007fef632b8ec8> #<News:0x007fef632b8680> #<News:0x007fef632b7e38>

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您似乎没有以这种方式调用您的方法(您正在调用原始.to_csv方法。请在您的视图中尝试执行此操作:

format.csv { send_data @data.map(&:to_csv }