Comments (16)
hmm, maybe its worth adding another declaration (instead of object
)
collection @users, :users
from rabl.
Yeah there will be settings controlling all of this stuff very soon. I agree it should be configurable.
from rabl.
I would probably create collection @users => :users
to match the syntax in other declarations. Does that work? And then add configurations for collection root node "users": { }
and object root node on a project level basis. I also probably need a way to tweak those on a per template basis?
from rabl.
sure, that sounds great
from rabl.
Thanks for the suggestion
from rabl.
turns out ExtJS its easy to get it to use the original format as well (using record: 'user'
option). so that solved my issue but i'll be happy to test the new collection
syntax option once its working
thanks
from rabl.
Thanks, Can you help me design the configuration options dsl. I was thinking to take a lesson from the way tequila did it:
object @user
initial_label true
# adds { users : [{ user : { first_name : "..." }, ...] }
and then
item_label false
# changes it to [{ first_name : "..." }, ...]
but it doesn't feel all that clean. Do you have any suggestions. Can you think of other options that might need to be configurable?
from rabl.
yeah, initial_label
does sound kind of weird. I'd recommend root_name
. I do like the idea of having the false
value return the value directly
from rabl.
Another option could be simply an options hash on the 'object' or 'collection':
object @user, :initial_label => true, :item_label => false
Not sure if this is better or worse and then I would probably need it for child too?
child :users, :initial_label => true, :item_label => false do
attributes :first_name
end
from rabl.
ah, good point. object @user => :user
seems like the best option. then it'd be the same as for a collection
if its nil, it should use intelligent defaults as it does now (using the model_name) which is very cool
from rabl.
Ah interesting so basically:
root_name false # { user : {...} }
root_name 'users' # { users : { user : {} }
That could work? But how would I mention to remove the inner 'object' name if you wanted:
{ users : [...] }
Once I figure out the cleanest syntax, implementing this will be trivial.
from rabl.
i'll hop on IRC :-)
from rabl.
Ok so basically:
object @user => :user
# => { user : {...} }
and
collection @users => :users
# => { 'users' : { 'user' : {...} } }
I am still not sure how I would allow the other permutation:
{ 'users' : { "first_name" : "..." } }
Is this second way where the item has no "user" root node in a collection your preferred output?
from rabl.
I actually have to go. Ill be on IRC later, maybe we can design this then.
from rabl.
cool, i'll think about it and catch up with you soon on IRC. my nick is jacquesc
thanks
from rabl.
Final issue left for this is: #4
Right now you can do:
object @user => :person
collection @users => :people
and it will add a root node "people" BUT there will still be a "person" label inside for every person i.e:
{ "people" : [ { "person" : { age : 22 } } ] }
That is how I prefer it, but I can see the need for the other way:
{ "people" : [ { age : 22 } ] }
Currently that way isn't possible.
from rabl.
Related Issues (20)
- Drop riot? Unmaintained, broken on Ruby 2.5. HOT 2
- How to use rabl with swagger? HOT 2
- Tagging a new version, or use master branch? HOT 1
- Unable to properly render json for an simple array of objects HOT 1
- How do I render free form metadata HOT 1
- Migrating to Rails 5 - Rabl returning Active Record object
- Rspec renders rabl as string instead of json
- Not able to get the rendered result in Rails console HOT 1
- Rabl output values as keys
- Rabl partial lookup based on requested api namespace
- upgrading from 0.14.0 to 0.14.1 is a breaking change HOT 8
- Child removes node from response when the provided object is an empty array HOT 2
- Rabl not renders collection properly HOT 4
- Is nested map valid in RABL?
- N+1 issues HOT 1
- some problems to install rable on windows HOT 2
- Avoid playing with `Oj` shared `default_options` HOT 2
- rabl tests failing with rr 3.x and Ruby 3 HOT 12
- Rails 7 compatibility HOT 1
- access controller instance variables in representers
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rabl.