2010-06-15 1 views
0

Я работаю с контроллером Rails 3, который имеет очень специфическую ограниченную цель, и все, что мне нужно, это ответить на него: json.Как включить ответчика в ActionController :: Metal in Rails 3?

Это скринкаст говорит, что мой контроллер может наследовать от ActionController :: Metal, а затем просто включить функциональность мне нужно сделать вещи быстрее: http://rubyonrails.org/screencasts/rails3/action-controller

Когда мой контроллер выглядит следующим образом:

class FoldersController < ActionController::Metal 
    respond_to :json 
    def all 
    respond_with Folder.all 
    end 
end 

Я получаю сообщение об ошибке:

undefined method `respond_to' for FoldersController:Class 

Я пробовал, включая ответчика, ActionController :: Responder, Act ionController :: Metal :: Responder, но никто из них не работает. Что я должен включить, чтобы получить эту функцию ответа?

ответ

1

Вам нужно включить больше классов, а не только ответчика. Вот мой ApplicationController, но не все из них могут вам понадобиться:

class Api::ApplicationController < ActionController::Metal 
    include ActionController::Helpers 
    include ActionController::UrlFor 

    include ActionController::Redirecting 
    include ActionController::Rendering   # enables rendering 
    include ActionController::ConditionalGet  # required for respond_to and respond_with 
    include ActionController::MimeResponds  # enables serving different content types like :xml or :json 

    include ActionController::Cookies    # enables cookies 
    include AbstractController::Callbacks   # callbacks for your authentication logic 
    include ActiveSupport::Rescuable    # enables resque_from 

    include Rails.application.routes.url_helpers 
end