2014-12-28 7 views
5

Ich habe eine einfache angulare Schienen App, die ich versuche, verdrahtet werden.Stop Rails versucht, eine Vorlage/ActionView :: MissingTemplate

Hier ist meine Schienen-Controller:

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 

Ich halte immer die ActionView::MissingTemplate Fehler, da Schienen hält eine erb-Vorlage zu dienen versucht. Ich möchte keine Vorlage !! Ich will nur Json. Kann jemand bitte die definitive reply_to/respond_with-Syntax geben, die mich für immer von Vorlagen befreit?

Antwort

6

gibt es zwei Möglichkeiten in Schienen für das Rendering, CMIIW

zunächst als Standard, wird es eine Ansichtsvorlage machen, Beispiel

def show end dann wird es zeigen nach Ansicht der wie üblich machen, Sie selbst erklärt respond_to: json, wird es die json Ansicht machen, so das ist, warum Sie MissingTemplate Ausnahme bekam

dann ist der nächste Weg render json: ... verwendet, Beispiel

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 

Schienen führen über render wirklich nützlich ist, können Sie es here

+0

Awesome, dank so viel gelesen – user3828000