2016-04-10 12 views
0

Rails MVCコントローラを別の名前空間で拡張しようとしています。サブクラスをビューを処理する代わりにJSONを受け入れて返すREST APIとして機能させています。Rails API、ハンドラを設定/オーバーライドする方法

Rails.application.routes.draw do 

    resources :companies 

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

しかし、私は/ api/v1/companiesのルートを呼び出すと、ビューが存在しないと不平を言って「テンプレートがありません」というエラーが表示されます。詳細には、.erbファイルを処理しようとしていると思ういくつかのハンドラーがあります。ここで

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

私のAPI/V1 /でcompanies_controller

class Api::V1::CompaniesController < CompaniesController 

    def show 
    super 
    end 

end 

はレールがビューテンプレートを探してみるとちょうどJSONを返していないように私はそれを作ることができる方法はありますか?

+0

として常にレンダリングする必要があります。 – 7urkm3n

+0

@ 7urkm3n上記に追加されました。これは今のところ、/ api/vi/companies/1の基本的なGETをしようとしています。 – tpow

+1

あなたは 'respond_to:json'コントローラを追加しようとしましたが、' CompaniesController'の直下に追加してください、 'respond_with(@object) 'showメソッドで。 – 7urkm3n

答えて

1

これは、uは、APIフォルダにあることを、あなたの `companies_controller.rb`ファイルを投稿することができますJSON

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

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

end 
関連する問題