为什么不在csv中导出数字?

时间:2015-10-14 13:28:29

标签: ruby-on-rails ruby csv

请帮助解决问题。

我创建脚手架产品,填写它,并尝试将产品数据导出到csv格式文件。 application_controller.rb:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  require 'csv'
end

产品控制器:

class ProductsController < ApplicationController
  def index
    @products = Product.all

    respond_to do |format|
      format.html
      format.csv do
        headers['Content-Disposition'] = "attachment; filename=\"user-list\""
        headers['Content-Type'] ||= 'text/csv'
      end
    end    
  end
end

应用程序/视图/用户/ index.csv.erb:

<%- headers = [
  'title', 
  'is_catalog', 
  'parent_id', 
  'lft', 
  'rgt', 
  'description'
] -%>
<%= CSV.generate_line headers %>
<%- @products.each do |product| -%>
  <%= CSV.generate_line([
    product.title, 
    product.is_catalog, 
    product.parent_id, 
    product.lft, 
    product.rgt, 
    product.description
  ]) %>
<%- end -%>

模式:

create_table "products", force: :cascade do |t|
  t.string   "title"
  t.text     "description"
  t.boolean  "is_catalog"
  t.integer  "parent_id"
  t.integer  "lft"
  t.integer  "rgt"
end

但在打开链接'host / products.csv'之后,下载了csv文件,其中包含'lft'列中的'###'符号。在截屏http://hostingkartinok.com/show-image.php?id=f08a98e485285e4adb23f5c148620aa2

上看到它

请帮助导出'lft'列值

2 个答案:

答案 0 :(得分:2)

当数字太大而无法在可用列宽中显示时,'###'符号是Excel表示。因此,只需通过拖动列标题或双击列标题中的右侧分隔符来扩大列,以便将widt自动调整为具有最大宽度的值。

答案 1 :(得分:0)

我猜您的电子表格软件(Excel?)的结果编号太宽了。如果使用文本编辑器打开文件时显示正确,那么您就可以了。您的数据写得很好。