2017-03-23 53 views
0

我已經瀏覽了這裏的主題,但提到的解決方案對我而言並不適用。Api :: V1 :: Controller的未定義方法respond_to'

我想爲我的rails應用程序創建一個API,並遵循Railscast的API版本控制教程。我使用Rails 5.

這是我routes.rb文件:

Rails.application.routes.draw do 

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

end 

而這個新orders_controller.rbcontrollers/api/v1

module Api 
    module V1 
    class OrdersController < ApplicationController 

     respond_to :json 

     def index 
      respond_with Order.all 
     end 

    end 
    end 
end 

當來訪http://localhost:3000/api/v1/orders我總是得到以下異常:

undefined method `respond_to' for Api::V1::OrdersController:Class Did you mean? respond_to? 

我有阿雷阿dy將responder添加到我的gem文件中,但是沒有解決。

回答

1

在您的訂單控制器中,您犯了拼寫錯誤。更改

repsond_with Order.all 

respond_with Order.all 

此外,你犯了一個拼寫錯誤在你的路由文件了。變化:

namespace :api, defaults: { format: 'josn' } do 

namespace :api, defaults: { format: 'json' } do 
+0

哦,謝謝;),但仍得到相同的錯誤不幸 – Luk579

+0

萬一你忘記運行'軌摹反應:install' – Mark

+0

另外,你提到安裝'responder' gem沒有解決。但是,如果您將寶石名稱添加到您的gem文件中並運行'bundle install',那麼您應該很好 – Mark