Rails呈现状态::未找到丢失的模板错误

时间:2017-09-17 10:23:40

标签: ruby-on-rails rendering

在为课程开发应用程序时,我遇到了一个绊脚石:

The error screen

这是我的Stocks Controller错误,出现错误:

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

在课程中,它们具有与我相同的代码,但对于它们,它的工作原理。我所知道的唯一区别是他们正在研究Rails 4(Nitrous),并且我正在研究Rails 5 (Mac OS X / Atom IDE / GitLab存储库)。如果可以,请帮助我!提前谢谢!

2 个答案:

答案 0 :(得分:7)

:nothing选项为deprecated,将在Rails 5.1中删除。使用head方法回复空响应正文。

试试这个:

render body: nil, status: :not_found

或:

head :not_found

请不要将错误发布为图像,复制文本

答案 1 :(得分: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