请帮助解决问题。
我创建脚手架产品,填写它,并尝试将产品数据导出到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'列值
答案 0 :(得分:2)
当数字太大而无法在可用列宽中显示时,'###'符号是Excel表示。因此,只需通过拖动列标题或双击列标题中的右侧分隔符来扩大列,以便将widt自动调整为具有最大宽度的值。
答案 1 :(得分:0)
我猜您的电子表格软件(Excel?)的结果编号太宽了。如果使用文本编辑器打开文件时显示正确,那么您就可以了。您的数据写得很好。