2016-04-10 11 views
0

Ich versuche, einen Rails MVC-Controller in einem anderen Namespace zu erweitern und die Unterklasse als eine REST-API zu fungieren, um JSON zu akzeptieren und zurückzugeben, anstatt mit Ansichten zu arbeiten.Rails API, wie man Handler setzt/übergibt

Rails.application.routes.draw do 

    resources :companies 

    namespace :api do 
    namespace :v1, defaults: { format: :json} do 
     resources :companies 
    end 
    end 

Allerdings, wenn ich die/api/v1/Firmen Route aufrufen, erhalte ich eine Fehlermeldung „Fehlende Vorlage“ beschwert, dass es keine Aussicht. Im Detail sehe ich einige Handler, die mich glauben machen, dass es versucht, eine .ERB-Datei zu verarbeiten.

Missing template api/v1/companies/show, companies/show, application/show with 
{:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. 

Hier ist meine api/v1/companies_controller

class Api::V1::CompaniesController < CompaniesController 

    def show 
    super 
    end 

end 

Gibt es eine Möglichkeit, es zu machen, so dass Schienen nicht versuchen, eine Ansichtsvorlage zu finden und gibt nur die json?

+0

u kann Ihre 'companies_controller.rb' Datei schreiben. – 7urkm3n

+0

@ 7urkm3n Hinzugefügt oben. Das ist es für jetzt, nur versuchen, eine grundlegende GET zu machen auf/api/vi/companies/1 – tpow

+1

hast du versucht, auf Controller 'Antwort_to: json' hinzufügen, fügen Sie es direkt unter' CompaniesController', auch 'respond_with (@object) 'in der Show-Methode. – 7urkm3n

Antwort

1

Es sollte in api Ordner machen immer als JSON

class Api::V1::CompaniesController < CompaniesController 
    respond_to :json 

    def show 
    respond_with(@object) # pass your own object 
    end 

end