Wice_Grid CSV导出无效 - 未初始化的常量CSV :: Writer

时间:2014-11-11 14:02:34

标签: ruby-on-rails ruby csv wice-grid

我继承了“在开发中使用ruby 1.8.7运行的rails应用程序。”

我有一个wice_grid表,我试图以CSV格式导出,在开发过程中一切都很完美。

当我将其推向生产时,我收到以下错误:

uninitialized constant CSV::Writer

生产机器正在运行Ruby 1.9.1,根据我的阅读,我认为问题来自那里。

我试图把:

required 'csv'

在控制器或模型中,但没有任何反应,开发工作,生产没有。

这是控制器代码:

def index
  require 'csv'
    @service_requests = initialize_grid(ServiceRequest, 
      :name => "solicitudes",
      :order => "created_at" , 
      :order_direction => 'desc',
      :include => [:user, :service],
      :enable_export_to_csv => true,
      :csv_file_name => 'Listado de Solicitudes'
    )
    export_grid_if_requested('solicitudes' => 'service_requests') do
      #Si se pulsa en exportar se exportan todos las celdas de la tabla seleccionada (con filtros aplicados)
    end
end

以下是视图的一部分,它调用了部分:

<%= render :partial => 'service_requests' %>

这是部分的,因为问题不会太长而被裁剪:

<%= grid(@service_requests, :show_filters => :always) do |service_request|

 [...]

  service_request.column  :column_name => 'Nombre' , :attribute_name => 'name', :model_class => User do |sr|
    sr.user.name
  end
  service_request.column  :column_name => 'Apellidos' , :attribute_name => 'lastName' , :model_class => User  do |sr|
    sr.user.lastName
  end

 [...]

end %>

我读过这个帖子,但对我没什么帮助:write csv in ruby 1.9 and CSV::Writer

提前谢谢大家!

1 个答案:

答案 0 :(得分:2)

某处,您尚未发布,您正在引用CSV::Writer。这在本地工作,因为您使用的是Ruby 1.8.7,但您的生产服务器使用的是Ruby 1.9.1。使用Ruby 1.9弃用CSV::Writer

来自the docs

# * The old CSV's Reader and Writer classes have been dropped.

第一步是将本地Ruby升级到与服务器相同的版本。这将在本地为您提供相同的错误,一旦您找到并删除CSV::Writer

,该错误就会消失

CSV文档提供了有关如何使用当前CSV类来完成CSV::Writer以前执行操作的示例。这是一个例子:

# == Writing
#
# === To a File
#
#   CSV.open("path/to/file.csv", "wb") do |csv|
#     csv << ["row", "of", "CSV", "data"]
#     csv << ["another", "row"]
#     # ...
#   end

升级Ruby可能会引发其他错误。但是Ruby 1.8.7 was retired in 2013所以这些是您现在想要解决的问题而不是以后的问题。

祝你好运!