Comments (7)
I am not sure I fully understand. It sounds like you want a way only to return the unique required items associated with a mission. I would probably not calculate that in the view. I would create the logic in the model:
# mission.rb
class Mission
# Returns the required items for this mission
def unique_required_items
self.requirement_items.uniq_by { |item| i.title }
end
end
# View
child :unique_required_items => :requirements do
attributes :id, :title
# Whatever else you want to add to the response
end
If I missed the question maybe you can elaborate
from rabl.
Thanks for your answer. This is not problem to render unique items, I have a problem with counting them.
I'll try to describe this other way.
There are 1 mission and 2 items in database. And then I did this:
20.times { Mission.first.items << Item.first }
10.times { Mission.first.items << Item.last }
And I need to get in my view something like this:
missions: [
mission: {
title: "something"
requirements: [
item: {
title: "item 1"
num: 20
},
{
item: {
title: "item 2"
num: 10
},
}
]
}
]
So, Mission.first.items.count
should return 30, but when I render this, I want there would be only 2 items (unique), but with additional attribute num
(or quantity
).
I hope this is better explanation. Thank you one more time.
from rabl.
How about something like this:
# mission.rb
class Mission
def unique_required_items
items = self.requirement_items.group_by(&:id)
# Returns { 1 => [<item>, <item>], 2 => [<item2>, <item2>], ... }
items.map do |item_id, items|
{ :item => { :title => items[0].title, :num => items.size } }
end
# Should return [ { :item => { :title => "...", :num => 20 } }, ... ]
end
end
# View
code :requirements do |m|
m.unique_required_items
end
Not the best solution ever but in principle it should work. Pushes a lot of the work into the model.
from rabl.
Another option (same idea):
# View
code :requirements do |m|
m.requirement_items.group_by(&:id).map do |item_id, items|
{ :item => { :title => items[0].title, :num => items.size } }
end
# Should return [ { :item => { :title => "...", :num => 20 } }, ... ]
end
from rabl.
Thanks a lot, I'll try it tonight!
from rabl.
Re-open if you cant get it working.
from rabl.
Works awesome, thanks!
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.