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.