Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 发生异常时Rails TemplateMissing_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 发生异常时Rails TemplateMissing

Ruby on rails 发生异常时Rails TemplateMissing,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有以下代码段 def range respond_to do |format| if params[:start] && params[:end] begin dstart = Time.parse(params[:start]) dend = Time.parse(params[:end]) rescue => e format.json { render :json => { :

我有以下代码段

def range
  respond_to do |format|
    if params[:start] && params[:end]
      begin
        dstart = Time.parse(params[:start])
        dend = Time.parse(params[:end])
      rescue => e
        format.json { render :json => { :status => :unprocessable_entity, :error => e.message }} and return
      end
  ...
它的工作原理非常好,并且可以放在底部的东西上

...
format.json { render :json => { :status => :ok, :posts => @res.to_json(:only => [:date, :content, :user_id]) } }
  else
format.json { render :json => { :status => :unprocessable_entity, :error => "must have a _start_ and _end_ date" } }
...

问题是当出现异常并调用
rescue
部分时,Rails不会用json响应,而是告诉我“模板丢失”。我的语法有问题吗?

D'oh,原来我不需要
格式.json
位。但是,确切的原因是什么?

考虑一下这个关于显示操作的示例,以了解错误

class ModelsController
.
.
  def show
    @model = Model.find(params[:id])

    respond_to do |format|
      format.html
      format.js
    end
  end
end
在这种情况下,如果请求的类型是html,那么rails按约定搜索一个文件 app/views/models/show.html.erb

但是如果请求的类型是js,那么rails将搜索app/views/models/show.js.erb。 如果这些文件不存在,rails将抛出模板丢失错误

因此,如果您只响应json,那么您可以这样做

respond_to do |format|
  format.json do
    begin 
    ..  
    rescue
      render :json => { }
    end 
end