From ca86a48736f6d4722b3c214af65a2ccd70b1cb43 Mon Sep 17 00:00:00 2001 From: mo Date: Sun, 24 Sep 2017 14:46:15 -0600 Subject: use jbuilder to render backbone json. --- app/helpers/application_helper.rb | 8 +++++++- app/views/application/_backbone_collection.html.erb | 6 +++--- app/views/application/json/_categories.jbuilder | 7 +++++++ app/views/application/json/_tags.jbuilder | 7 +++++++ 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 app/views/application/json/_categories.jbuilder create mode 100644 app/views/application/json/_tags.jbuilder diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 893abc5d..efb8ccad 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -40,6 +40,12 @@ module ApplicationHelper end def backbone_collection_for(items) - render partial: 'backbone_collection', locals: { items: items } + safe_name = items.name.split('::').last + collection_name = safe_name.pluralize + render partial: 'backbone_collection', locals: { + collection_name: collection_name, + items: items, + partial_name: collection_name.downcase, + } end end diff --git a/app/views/application/_backbone_collection.html.erb b/app/views/application/_backbone_collection.html.erb index a806939f..85520ba6 100644 --- a/app/views/application/_backbone_collection.html.erb +++ b/app/views/application/_backbone_collection.html.erb @@ -1,5 +1,5 @@ <% cache items do %> -<%= javascript_tag do %> -csx.<%= items.name.split('::').last.pluralize %> = new Backbone.Collection(<%= items.to_json.html_safe %>); -<% end %> + <%= javascript_tag do %> + csx.<%= collection_name %> = new Backbone.Collection(<%= raw render partial: "application/json/#{partial_name}", locals: { items: items } %>); + <% end %> <% end %> diff --git a/app/views/application/json/_categories.jbuilder b/app/views/application/json/_categories.jbuilder new file mode 100644 index 00000000..f766b88a --- /dev/null +++ b/app/views/application/json/_categories.jbuilder @@ -0,0 +1,7 @@ +json.cache! items do + json.array! items do |category| + json.id category.id + json.name category.name + json.slug category.slug + end +end diff --git a/app/views/application/json/_tags.jbuilder b/app/views/application/json/_tags.jbuilder new file mode 100644 index 00000000..8b0ecc85 --- /dev/null +++ b/app/views/application/json/_tags.jbuilder @@ -0,0 +1,7 @@ +json.cache! items do + json.array! items do |tag| + json.id tag.id + json.name tag.name + json.count tag.taggings_count + end +end -- cgit v1.2.3