我试图在 ApplicationController 中调用 send_data,然后发生错误。
error: "Internal server error: undefined method `send_data'
环境版本在这里。:红宝石 2.1.2p95 / angularjs 1.2
很多人建议只能在ApplicationController中调用send_data,这样讲如何将ApplicationController的方法暴露给外部类。 如何从 ApplicationHelper 调用 ApplicationController 方法
但我在 ApplicationController 中调用 send_data。
# Application controller
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
# protect_from_forgery with: :null_session
include ApplicationHelper
def self.send_csv(csv, options = {})
Rails.logger.debug("send_csv")
bom = " "
bom.setbyte(0, 0xEF)
bom.setbyte(1, 0xBB)
bom.setbyte(2, 0xBF)
Rails.logger.debug("send_data start")
send_data bom + csv.to_s, options
end
end
我该如何解决这类问题。
请...
更新:我的系统包括葡萄。所以send_csv
将从葡萄实例中调用
[来电]
module ConfAPI
module V1
class AAABBBCCC < Grape::API
get '/output/:id' do
test_data = {
:column1 => "abc",
:column2 => "def",
:column3 => "ghi"
}
CSV.generate do |csv|
#csv << test_data
test_data.each do |key, value|
csv << [value]
end
ApplicationController.send_csv(csv)
end
Rails.logger.debug("Output end")
[拨电至]
class ApplicationController < ActionController::Base
include ApplicationHelper
# def self.send_csv(csv, options = {})
def send_csv(csv, options = {})
Rails.logger.debug("not self send_csv")
bom = " "
bom.setbyte(0, 0xEF)
bom.setbyte(1, 0xBB)
bom.setbyte(2, 0xBF)
Rails.logger.debug("send_data start")
send_data bom + csv.to_s, options
end
这种方法会产生新的错误。
error: "Internal server error: undefined method `send_csv' for ApplicationController:Class"
如何从 Grape 实例调用 Application Controller 中的实例方法?
我感谢您的帮助。