Commit ca86a487

mo <mo.khan@gmail.com>
2017-09-24 20:46:15
use jbuilder to render backbone json.
1 parent c141200
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
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
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
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 %>