{"id":1764,"date":"2012-04-12T16:16:04","date_gmt":"2012-04-12T13:16:04","guid":{"rendered":"http:\/\/blog.railsware.com\/?p=1764"},"modified":"2021-08-16T15:56:46","modified_gmt":"2021-08-16T12:56:46","slug":"shared-mustache-templates-for-rails-3","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/","title":{"rendered":"Shared Mustache Templates for Rails 3"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Hello my dear friends. Today we will talk about how we share mustache templates in Rails 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s imagine that we have a task, where on first load of the page we show only 10 products. But when user scroll, we should automatically load more products on page (aka continuous pagination).<br>Of course, this task can be solved in several ways, but I want solve this task by sharing one template between Rails and JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are many JavaScripts templates exists today &#8211; <a href=\"http:\/\/twitter.github.com\/hogan.js\/\" target=\"_blank\" rel=\"noreferrer noopener\">Hogan.js<\/a>, <a href=\"http:\/\/handlebarsjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Handlebars<\/a>, <a href=\"http:\/\/mustache.github.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mustache<\/a> etc. I choose Mustache, because it&#8217;s simple and has template engine implemented on many languages (we need JavaScript and Ruby). We created a gem for such type of tasks &#8211; <a href=\"https:\/\/github.com\/railsware\/smt_rails\" target=\"_blank\" rel=\"noreferrer noopener\">smt_rails<\/a>.<br>How it works?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First of all you have to add this gem to your Gemfile and start &#8216;bundle install&#8217;:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gem 'smt_rails', git: 'git:\/\/github.com\/railsware\/smt_rails.git'\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Next launch generator:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">rails g smt_rails:install\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now you can create a directory in &#8216;app\/templates&#8217; mustache templates (these templates ends with &#8216;.mustache&#8217; by default). Let&#8217;s create partial for the product:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">File: &#8216;app\/templates\/products\/_product.mustache<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Content:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;a href=\"{{url}}\">{{title}}&lt;\/a>\n&lt;p>{{description}}&lt;\/p>\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You can render this partial in ActiveView:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;%= render \"products\/product\", :mustache => product.as_json %> \n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And in JavaScript:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var product = \u2026 ; come from ajax call as json\nvar content = SMT['products\/product'](product);\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So in the end you&#8217;ll have only one template, which is shared between Rails and JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Demo application with scroll pagination you can find <a href=\"http:\/\/st-rails-example.herokuapp.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">here<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Source code: <a href=\"https:\/\/github.com\/le0pard\/st_rails_example\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/le0pard\/st_rails_example<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s all folks!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SMT_rails (Shared Mustache Templates for Rails)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rubygems: <a href=\"https:\/\/rubygems.org\/gems\/smt_rails\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/rubygems.org\/gems\/smt_rails<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Source code: <a href=\"https:\/\/github.com\/railsware\/smt_rails\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/railsware\/smt_rails<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello my dear friends. Today we will talk about how we share mustache templates in Rails 3. Let&#8217;s imagine that we have a task, where on first load of the page we show only 10 products. But when user scroll, we should automatically load more products on page (aka continuous pagination).Of course, this task can&#8230;<\/p>\n","protected":false},"author":17,"featured_media":1771,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Alexey Vasiliev"],"class_list":["post-1764","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Shared Mustache Templates for Rails 3.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Alexey Vasiliev\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Shared Mustache Templates for Rails 3 | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Shared Mustache Templates for Rails 3.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"290\" \/>\n\t\t<meta property=\"og:image:height\" content=\"248\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-04-12T13:16:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-16T12:56:46+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#article\",\"name\":\"Shared Mustache Templates for Rails 3 | Railsware Blog\",\"headline\":\"Shared Mustache Templates for Rails 3\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/alexey-vasiliev\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/mustache.png\",\"width\":290,\"height\":248},\"datePublished\":\"2012-04-12T16:16:04+03:00\",\"dateModified\":\"2021-08-16T15:56:46+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#listItem\",\"name\":\"Shared Mustache Templates for Rails 3\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#listItem\",\"position\":3,\"name\":\"Shared Mustache Templates for Rails 3\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/alexey-vasiliev\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/alexey-vasiliev\\\/\",\"name\":\"Alexey Vasiliev\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/alexey-vasiliev-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Alexey Vasiliev\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/\",\"name\":\"Shared Mustache Templates for Rails 3 | Railsware Blog\",\"description\":\"Shared Mustache Templates for Rails 3.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/alexey-vasiliev\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/alexey-vasiliev\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/mustache.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#mainImage\",\"width\":290,\"height\":248},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/shared-mustache-templates-for-rails-3\\\/#mainImage\"},\"datePublished\":\"2012-04-12T16:16:04+03:00\",\"dateModified\":\"2021-08-16T15:56:46+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Shared Mustache Templates for Rails 3 | Railsware Blog","description":"Shared Mustache Templates for Rails 3.","canonical_url":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#article","name":"Shared Mustache Templates for Rails 3 | Railsware Blog","headline":"Shared Mustache Templates for Rails 3","author":{"@id":"https:\/\/railsware.com\/blog\/author\/alexey-vasiliev\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png","width":290,"height":248},"datePublished":"2012-04-12T16:16:04+03:00","dateModified":"2021-08-16T15:56:46+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#listItem","name":"Shared Mustache Templates for Rails 3"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#listItem","position":3,"name":"Shared Mustache Templates for Rails 3","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/alexey-vasiliev\/#author","url":"https:\/\/railsware.com\/blog\/author\/alexey-vasiliev\/","name":"Alexey Vasiliev","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/alexey-vasiliev-96x96.jpg","width":96,"height":96,"caption":"Alexey Vasiliev"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#webpage","url":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/","name":"Shared Mustache Templates for Rails 3 | Railsware Blog","description":"Shared Mustache Templates for Rails 3.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/alexey-vasiliev\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/alexey-vasiliev\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png","@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#mainImage","width":290,"height":248},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/#mainImage"},"datePublished":"2012-04-12T16:16:04+03:00","dateModified":"2021-08-16T15:56:46+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Shared Mustache Templates for Rails 3 | Railsware Blog","og:description":"Shared Mustache Templates for Rails 3.","og:url":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png","og:image:width":290,"og:image:height":248,"article:published_time":"2012-04-12T13:16:04+00:00","article:modified_time":"2021-08-16T12:56:46+00:00"},"aioseo_meta_data":{"post_id":"1764","title":"Shared Mustache Templates for Rails 3 | Railsware Blog","description":"Shared Mustache Templates for Rails 3.","keywords":[{"label":"Rails 3","value":"Rails 3"},{"label":"Ruby","value":"Ruby"},{"label":"Mustache","value":"Mustache"},{"label":"Templates","value":"Templates"},{"label":"shared","value":"shared"},{"label":"continuous pagination","value":"continuous pagination"}],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-6385f5b02d540","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:08","updated":"2025-09-26 11:14:39","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tShared Mustache Templates for Rails 3\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Shared Mustache Templates for Rails 3","link":"https:\/\/railsware.com\/blog\/shared-mustache-templates-for-rails-3\/"}],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2012\/04\/mustache.png","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/1764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=1764"}],"version-history":[{"count":34,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/1764\/revisions"}],"predecessor-version":[{"id":14159,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/1764\/revisions\/14159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/1771"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=1764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=1764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=1764"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=1764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}