返回咖啡脚本调用控制器方法,而不渲染视图

时间:2016-01-08 06:09:23

标签: ruby-on-rails coffeescript

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

我理解为什么我收到消息,但是我需要做些什么才能确保将控制权返回给调用控制器方法的咖啡脚本,以便执行咖啡脚本中的下一个语句?

我正在寻找的是一种从咖啡脚本中记录日志文件中的内容的方法。

1 个答案:

答案 0 :(得分:1)

问题是即使您不想要任何内容​​,控制器操作也必须返回您的请求的状态。最简单的方法是在head :no_content电话后立即在您的操作中使用logger.info。这将返回成功状态(204),但不会尝试渲染任何模板。您也可以使用head :ok,但no_content更清晰,因为您实际上并未发回任何内容。所以:

def create
  logger.info(params[:data])
  head :no_content
end

请注意,从技术上讲,您的javascript永远不会失去控制权,因为请求是异步的,除非您指定回调,否则脚本将立即继续执行。