在Rails

时间:2016-07-29 12:34:01

标签: ruby-on-rails csv

在Rails 2中开发应用程序。

我是来自数据库值的generating CSV文件。获取emails of users并生成CSV,但请写emails in one column instead of Row.

我尝试了很多,但没有找到任何解决方案。

以下controller file

中写入csv的代码
@users = User.all
tempArr = []

@users.each do |u|
  tempArr << u.email
end

respond_to do |format|
 format.csv {
  send_data tempArr.to_csv, :type => "text/csv", :filename => "usercsv.csv"
 }
end

数据显示如

a@gmail.com b@gmail.com c@gmail.com

想要显示

a@gmail.com
b@gmail.com
c@gmail.com

任何人都有一个想法或技巧要进行排序。

提前致谢

1 个答案:

答案 0 :(得分:0)

User模型中的

def self.to_csv(options = {})
  CSV.generate(options) do |csv|
    all.each do |user|
      csv << user.email
    end
  end
end

并且在控制器中你可以使用它

send_data @users.to_csv, :type => "text/csv", :filename => "usercsv.csv"

其中@users = User.all或其他

<强> EDITED

你的行动应该是

@users = User.all

respond_to do |format|
 format.csv {
  send_data @users.to_csv, :type => "text/csv", :filename => "usercsv.csv"
 }
end

已编辑2

添加到config/application.rb或仅添加到模型

require 'csv'