4

我有一个 Rails 应用程序(ruby 2.0.0,Rails 4.2.1)。我想使用acts_as_xlsx gem.

这是我的控制器:

class VulnerabilitiesController < ApplicationController
  before_action :set_vulnerability, only: [:show, :edit, :update, :destroy]
  # GET /vulnerabilities
  # GET /vulnerabilities.json
def index

  @vulnerabilities = Vulnerability.all 

  respond_to do | format |  
  format.html # index.html.erb
  format.json { render :json => @vulnerabilities }
  format.xlsx {
    send_data @vulnerabilities.to_xlsx.to_stream.read, :filename => 'costings.xlsx', :type => "application/vnd.openxmlformates-officedocument.spreadsheetml.sheet"
  }
end
(…)

这是我的模型:

class Vulnerability < ActiveRecord::Base
  acts_as_xlsx
end

但是当我点击我的按钮时:

<%= link_to 'Download', url_for(:format=>"xlsx") %>

我有一个错误:

Couldn't find all Vulnerabilities with 'id': (all, {}) (found 0 results, but was looking for 2)

截屏:

ActiveRecord RecordNotFound

任何人都可以帮忙吗?

4

1 回答 1

5

好的,在查看问题后,似乎默认的acts_as_xlsx gem 被rails 4.1+ 破坏了。我找到了一个存储库,该存储库具有应用于原始acts_as_xlsx gem 的补丁来解决问题,可以在此处找到:

https://github.com/straydogstudio/acts_as_xlsx

我更新了我的 gem,使它指向新的存储库

gem 'acts_as_xlsx',
  :git => "git://github.com/straydogstudio/acts_as_xlsx.git"

或者,您可以下载 zip 并将文件夹解压缩到供应商目录中(将其从acts_as_xlsx-master 重命名为acts_as_xlsx)。这是我所做的,以防修补的存储库消失。

gem 'acts_as_xlsx',
  :path => "vendor/acts_as_xlsx"

感谢 straydogstudio 的补丁。

于 2015-10-26T19:47:26.593 回答