【问题标题】:How to export models to a CSV file using Rails 3?如何使用 Rails 3 将模型导出到 CSV 文件?
【发布时间】:2015-06-25 10:35:17
【问题描述】:

我想使用 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

然而,当我访问指定的 url 时(我在 config/routes.rb 创建了一个路由,我得到一个包含以下详细信息的 csv 文件:

#&lt;News:0x007fef657d69f8&gt; #&lt;News:0x007fef632b95a8&gt; #&lt;News:0x007fef632b8ec8&gt; #&lt;News:0x007fef632b8680&gt; #&lt;News:0x007fef632b7e38&gt;

我错过了什么?

【问题讨论】:

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


    【解决方案1】:

    看起来您没有以这种方式调用您的方法(而是调用原始的 .to_csv 方法。尝试在您的视图中执行此操作:

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

    【讨论】:

    • 我假设你关闭了)。我已经尝试过了,也没有工作。 #<0x007fb0a7cdcdf0>
    猜你喜欢
    • 2022-01-13
    • 2013-09-12
    • 2012-09-29
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多