README.markdown in roar-rails-0.0.3 vs README.markdown in roar-rails-0.0.4

- old
+ new

@@ -3,49 +3,42 @@ _Makes using Roar's representers in your Rails app fun._ ## Features * Rendering with responders +* Parsing incoming documents * URL helpers in representers * Better tests * Autoloading ## Rendering with #respond_with Easily render resources using representers with the built-in responder. ```ruby class SingersController < ApplicationController + include Roar::Rails::ControllerAdditions respond_to :json def show singer = Singer.find_by_id(params[:id]) respond_with singer end - - def self.responder - Class.new(super).send :include, Roar::Rails::Responder - end - end ``` Need to use a representer with a different name than your model? Pass it in using the `:with_representer` option: ```ruby class SingersController < ApplicationController + include Roar::Rails::ControllerAdditions respond_to :json def show singer = Musician.find_by_id(params[:id]) respond_with singer, :with_representer => SingerRepresenter end - - def self.responder - Class.new(super).send :include, Roar::Rails::Responder - end - end ``` Goes great with [Jose Valim's responders gem][responders]! @@ -60,9 +53,37 @@ respond_with singer end end ``` + + +## Parsing incoming documents + +In `#create` and `#update` actions it is often necessary to parse the incoming representation and map it to a model instance. Use the `#consume!` method for this. + +```ruby +class SingersController < ApplicationController + respond_to :json + + def create + singer = Singer.new + consume!(singer) + + respond_with singer + end +end +``` + +The `consume!` call will roughly do the following. + +```ruby +singer. + extend(SingerRepresenter) + from_json(request.body) +``` + +So, `#consume!` helps you figuring out the representer module and reading the incoming document. ## URL Helpers Any URL helpers from the Rails app are automatically available in representers.