簡體   English   中英

從Rails生成CSV文件

[英]Generate CSV file from rails

我一直在閱讀類似的問題,但是許多答案對我而言已經過時或不夠清晰。

我希望能夠做類似的事情(在控制器動作中):

respond_to do |format|
  format.html
  format.csv
end

我知道我需要一個諸如action.csv.erb之類的視圖


所以我的問題是:

1)我需要在rails中進行配置以使這種情況大體上發生。

2)如何設置CSV視圖以顯示模型中的一些基本字段?

更新:

因此,我嘗試走逗號的路線,安裝並銷售了gem。

然后根據閱讀的書,我把它扔進了我的模型中(根據我的需要定制):

comma do

user_id 'User'
created_at 'Date'
name 'Name'
end

然后,將其放入索引操作的控件中(根據自述文件):

  format.csv { render :csv => MyModel.limited(50) }

然后,當訪問索引(不是CSV格式)時,出現以下ActionController Exception錯誤:

未定義的方法'逗號'

因此,我在Google上進行了搜索,並閱讀了我應該在模型中添加“逗號”的信息。

完成之后,我刷新了(我的本地索引頁面),錯誤更改為:

沒有要加載的此類文件-逗號

因此,在這一點上,我決定顯然不能找到逗號文件。 因此,我將文件從逗號的供應商gem文件夾(從逗號的lib文件夾)復制到rails lib文件夾。 然后,我刷新頁面並發現此錯誤:

未初始化的常量錯誤

然后我幾乎放棄了。

跟蹤中的錯誤是:

/Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:在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 load_missing_constant' /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in const_missing中

其他說明,我已經安裝了FasterCSV

希望那是足夠的信息:)

我建議看一下逗號 它工作得很好,並允許您在模型級別(而不是視圖級別)處理內容。

看看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)  

這很糟糕,但是CSV庫(在1.9中,== FasterCSV)在meta_where上無法很好地發揮作用,所以我這樣做是這樣的:

@customers.collect {|c| lines.push ["#{c.lastname}","#{c.firstname}","#{c.id}","#{c.type}"}
lines = lines.collect {|line| line.join(',')}
csv_string = lines.join("\n")  
respond_to do |format|
  format.html
  format.csv { send_data(csv_string, :filename => "#{@plan.name.camelize}.csv", :type => "text/csv") }
end

難看,但是有效。

看看CSV Shaper。

https://github.com/paulspringett/csv_shaper

它具有良好的DSL,並且可以與Rails模型一起很好地工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM