2017-09-17 77 views
0

在开发的过程中的应用,我想出了一个绊脚石:Rails的呈现状态:没有发现失踪模板错误

The error screen

这里是我的股票控制器错误,其中出现的错误:

class StocksController < ApplicationController 
    def search 
    if params[:stock] 
     @stock = Stock.find_by_ticker(params[:stock]) 
     @stock ||= Stock.new_from_lookup(params[:stock]) 
    end 

    if @stock 
     render json: @stock 
     #render partial: 'lookup' 

    else 
     render status: :not_found ,nothing: true 
    end 

    end 

end 

在球场上,他们有相同的代码,我做的,但对他们来说,这只是works.The我所知道的是,他们正在轨道4(氧化亚氮)的区别,那我使用Rails 5(Mac OS X/Atom IDE/GitLab存储库)。请尽可能帮助我!谢谢!你提前!

回答

2

:nothing选项是deprecated并将在Rails 5.1中删除。使用head方法以空响应主体进行响应。

试试这个:

render body: nil, status: :not_found 

或:

head :not_found 

请不要发布错误图像,复制过去的文本

+0

它的工作!非常感谢! – ds998

0

这里的问题是,你是在else子句中不会呈现json,因此Rails将查找不存在的HTML视图。若要解决此问题,请更新代码如下:

class StocksController < ApplicationController 
    def search 

    if params[:stock] 
     @stock = Stock.find_by_ticker(params[:stock]) 
     @stock ||= Stock.new_from_lookup(params[:stock]) 
    end 

    if @stock 
     render json: @stock 
     #render partial: 'lookup' 

    else 
     render :json => {:error => "not-found"}.to_json, :status => 404 
    end 

    end 

end 
+0

谢谢你的解决方案,它出色地工作! – ds998