将数据从Ruby on Rails导出为CSV文件

5

我正在尝试使用Active Record和CSV类导出数据,但我没有生成的文件,可以帮助我查看代码吗。

当我点击导出时,没有打开对话框以从CSV下载文件,我漏掉了什么吗?

我的控制器

def export_csv
    @contact = Contacts.find_by_sql("select * from contacts_list limit 10")
     respond_to do |format|
       format.html
       format.csv { send_data @contact.as_csv }
     end
  end

我的模型

def self.to_csv
    attributes = %w{id name mail}

    CSV.generate(headers: true) do |csv|
      csv << attributes

      all.each do |contact|
        csv << attributes.map{ |attr| contact.send(attr) }
      end
    end
  end

我的看法

<%= link_to( 'Export CSV' ,{ :controller => :company, :action => :export_csv, format: "csv"}, { :class => "btn-ex" } ) %>

控制台输出

Started GET "/company/export_cs" for 127.0.0.1 at 2019-12-17 11:31:26 -0200
Processing by CompanyController#export_cs as HTML

只有这个,没有更多,没有错误,没有警告信息。


你有什么问题? - mrzasa
当我点击导出时,没有打开下载CSV文件的对话框,我是不是漏掉了什么? - codevb
点击链接后,转到您的 Web 服务器控制台并复制请求和响应信息。将其添加到您的问题中,不要粘贴在评论中。 - Beartech
@Beartech 更新了帖子,但保存 CSV 文件的对话框没有打开。 - codevb
@mrzasa更新了帖子,请查看。 - codevb
2个回答

4

小修正。右括号丢失了。可以写成以下形式: <%= link_to 'Export CSV', companies_export_csv_path(format: "csv"), { :class => "btn-ex" } %> - Pramod Itagi

1
<%= link_to( 'Export' ,{ :controller => :company, :action => :export_csv, format: 'csv', :company_id => @company.id}, { :class => "btn-edit" } ) %>

感谢大家,工作完美。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接