Я попытался вызвать send_data в ApplicationController, затем возникает ошибка.
error: "Internal server error: undefined method `send_data'
Версии окружения здесь. : рубин 2.1.2p95 / angularjs 1.2
Многие люди предполагают, что вы можете вызывать send_data только в ApplicationController, и говорят о том, как предоставить метод Application Controller внешним классам, подобным этому. Как вызывать методы ApplicationController из ApplicationHelper
Но я вызываю send_data в ApplicationController.
# 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
Как я могу решить такого рода проблемы.
пожалуйста...
Обновление: моя система включает Grape. Таким образом, send_csv
будет вызываться из экземпляра Grape.
[Позвонить с]
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"
Как я могу вызвать метод экземпляра в Application Controller из экземпляра Grape?
Я ценю вашу помощь.
send_data
. - person mu is too short   schedule 10.11.2014