从rails生成CSV文件

Ell*_*iot 11 csv ruby-on-rails

我一直在阅读类似的问题,但许多答案已经过时或不够清楚.

我希望能够像(在控制器动作中)做一些事情:

respond_to do |format|
  format.html
  format.csv
end
Run Code Online (Sandbox Code Playgroud)

我知道我需要一个像action.csv.erb这样的视图


所以我的问题是:

1)我需要在rails中配置什么才能允许这种情况发生.

2)如何设置CSV视图以显示模型中的一些基本字段?

更新:

所以我试着去逗号的路线,我安装并出售了宝石.

然后根据读到的我,我把它扔进我的模型(根据我的需要定制):

comma do

user_id 'User'
created_at 'Date'
name 'Name'
end
Run Code Online (Sandbox Code Playgroud)

然后我把它扔在索引操作的控件中(根据自述文件):

  format.csv { render :csv => MyModel.limited(50) }
Run Code Online (Sandbox Code Playgroud)

然后,当访问索引(不是CSV格式)时,我收到以下ActionController异常错误:

undefined方法`逗号'代表

然后我用谷歌搜索了,我读到我应该在我的模型中加上需要'逗号'.

完成后,我刷新(我的本地索引页),并将错误更改为:

没有这样的文件加载 - 逗号

所以在这一点上我决定显然不能找到逗号文件.所以我将comma的vendored gem文件夹中的文件从comma的lib文件夹复制到rails lib文件夹.然后我刷新了页面并登陆了这个错误:

未初始化的常量错误

然后我几乎放弃了.

跟踪的错误是:

/Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:in load_missing_constant' /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in const_missing'/Users/ elliot/ .gem/ruby/1.8/ gems/ activesupport-2.3 .5/lib/active_support/dependencies.rb:92:在`const_missing'中

其他说明,我已经安装了FasterCSV

希望这足够的信息:)

the*_*eIV 11

我建议看看逗号.它运行良好,允许您处理模型级别的内容,而不是视图级别.


Tob*_*ede 6

看看FasterCSV.

csv_string = FasterCSV.generate do |csv|

  cols = ["column one", "column two", "column three"]

  csv << cols

  @entries.each do |entry|                
    csv << [entry.column_one, entry.column_two, entry.column_three ]
  end

  filename = "data-#{Time.now.to_date.to_s}.csv"    

end

send_data(csv_string, :type => 'text/csv; charset=utf-8; header=present', :filename => filename)  
Run Code Online (Sandbox Code Playgroud)