2014-12-28 10 views
5

Ho una semplice app per dispositivi angolari che sto cercando di collegare.Stop Rails dal tentativo di fornire un modello/ActionView :: MissingTemplate

Ecco il mio controller rotaie:

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 

continuo a ricevere l'errore ActionView::MissingTemplate perché rotaie continua a cercare di servire un modello erb. Non voglio un modello !! Voglio solo JSON. Qualcuno può dare la sintassi di risposta definitiva/risposta_con definitiva che mi libererà dei modelli per sempre?

risposta

6

ci sono due modi di rotaie per il rendering, CMIIW

prima, come impostazione predefinita, renderà un modello di vista, ad esempio

def show end allora renderà show di vista, come al solito, persino dichiarato respond_to: jSON, che renderà la vista jSON, quindi questo è il motivo per cui hai eccezione MissingTemplate

quindi il modo successivo sta usando render json: ..., esempio

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 

guide su render è davvero utile, si può leggere here

+0

impressionante, grazie mille – user3828000

Problemi correlati