0.0
No commit activity in last 3 years
No release in over 3 years
Rails gem to store view templates in your database. Current supports only Mongoid.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 3.2
>= 0

Runtime

~> 3.0
 Project Readme

DatabaseViews

Build Status

DatabaseViews is Rails 3.x plugin that allows you to store and load views from the database. It currently supports Monoid, but is extensible enough to support other ORMs.

Installation

Add in your Gemfile:

gem 'database_views'

Usage

Create a view template model that includes DatabaseViews::Orm::Mongoid. You can name this model whatever you like, I'll use ViewTemplate in this example.

rails g model ViewTemplate

In the model:

class ViewTemplate
  include Mongoid::Document
  include Mongoid::Timestamps
  include DatabaseViews::Orm::Mongoid
end

Here are the fields DatabaseViews::Orm::Mongoid adds:

path - The path to the view template. Excludes any file extensions (ie. "posts/index").

contents - The body of the view template.

formats (default: :html) - Format the handler renders to.

locale (default: :en) - Locale of the template.

handlers (default: :erb) - The template handler for this extension (ie. :erb, :haml).

In the your controller, you can prepend_view_path if you want your Rails to check your resolver first for the view template, or you can append_view_path, if you want it check your resolver at the end of the lookup stac.k

class ApplicationController < ActionController::Base
  append_view_path ViewTemplate.resolver
  # prepend_view_path ViewTemplate.resolver
end

How does it work?

DatabaseViews defines a DatabaseResolver that extends ActionView::PathResolver. A #query method is defined on this class that tells the resolver how to look up a template in the database. In the controller, prepending or appending your resolver to the view path will include it in the lookup stack when Rails looks for a view template to render.

Credits

This blog post by arailsdemo, was very helpful in understanding how view templates and resolvers worked in Rails 3. I'd also recommend Crafting Rails Applications by José Valim.