Method: ActionController::MimeResponds#respond_with
- Defined in:
- lib/action_controller/metal/mime_responds.rb
#respond_with(*resources, &block) ⇒ Object
respond_with wraps a resource around a responder for default representation. First it invokes respond_to, if a response cannot be found (ie. no block for the request was given and template was not available), it instantiates an ActionController::Responder with the controller and resource.
Example
def index
@users = User.all
respond_with(@users)
end
It also accepts a block to be given. It’s used to overwrite a default response:
def destroy
@user = User.find(params[:id])
flash[:notice] = "User was successfully created." if @user.save
respond_with(@user) do |format|
format.html { render }
end
end
All options given to respond_with are sent to the underlying responder, except for the option :responder itself. Since the responder interface is quite simple (it just needs to respond to call), you can even give a proc to it.
225 226 227 228 229 230 231 232 233 234 |
# File 'lib/action_controller/metal/mime_responds.rb', line 225 def respond_with(*resources, &block) raise "In order to use respond_with, first you need to declare the formats your " << "controller responds to in the class level" if self.class.mimes_for_respond_to.empty? if response = retrieve_response_from_mimes(&block) = resources.size == 1 ? {} : resources. .merge!(:default_response => response) (.delete(:responder) || self.class.responder).call(self, resources, ) end end |