Rails 3.2.18
Ruby 2.1.5
Ubuntu 14.04
在我的routes.rb中,我有:
post '/tracker' => 'loggers#create'
在我的loggers_controller.rb中,我有:
class LoggersController < ApplicationController
def create
logger.info(params[:data])
end
end
在咖啡脚本文件中,我打电话给我,我有:
$.post '/tracker', { data: "some text"}
当代码运行时,我收到一条错误消息:
ActionView::MissingTemplate (Missing template loggers/create
我理解为什么我收到消息,但是我需要做些什么才能确保将控制权返回给调用控制器方法的咖啡脚本,以便执行咖啡脚本中的下一个语句?
我正在寻找的是一种从咖啡脚本中记录日志文件中的内容的方法。
答案 0 :(得分:1)
问题是即使您不想要任何内容,控制器操作也必须返回您的请求的状态。最简单的方法是在head :no_content
电话后立即在您的操作中使用logger.info
。这将返回成功状态(204),但不会尝试渲染任何模板。您也可以使用head :ok
,但no_content更清晰,因为您实际上并未发回任何内容。所以:
def create
logger.info(params[:data])
head :no_content
end
请注意,从技术上讲,您的javascript永远不会失去控制权,因为请求是异步的,除非您指定回调,否则脚本将立即继续执行。