Остановить Rails от попытки предоставить шаблон / ActionView:: MissingTemplate

у меня есть простое приложение angular rails,которое я пытаюсь подключить.

вот мой контроллер rails:

class ItemsController < ApplicationController
  respond_to :json, :html

  def index
    @items = Item.order(params[:sort]).page(params[:page]).per(15)
  end

  def show
    @item = Item.where(params[:id])

    if @item.empty?
      flash[:alert] = "Item number #{params[:id]} does not exist"
    else
      respond_with @item do |format|
        format.json { render :layout => false }
      end
    end
  end
end

Я продолжаю получать ActionView::MissingTemplate ошибка, потому что rails продолжает пытаться обслуживать шаблон erb. Мне не нужен шаблон!! Я просто хочу Джейсона. Может ли кто-нибудь дать окончательный синтаксис respond_to/respond_with, который избавит меня от шаблонов навсегда?

1 ответов


есть два способа в rails для рендеринга, CMIIW

во-первых, по умолчанию он будет отображать шаблон представления, например

def show end затем он отобразит show view как обычно, даже вы объявили respond_to: json, он будет отображать представление json, поэтому вы получили исключение MissingTemplate

тогда следующий способ-использовать render json: ..., например

class ItemsController < ApplicationController
  respond_to :json, :html

  def show
    @item = Item.where(params[:id])

    if @item.empty?
      render json: { message: "Item number #{params[:id]} does not exist", status: :not_found }
    else
      render json: @item.to_json
    end
  end
end

направляющие о render - Это очень полезно, вы можете прочитать его здесь