No commit activity in last 3 years
No release in over 3 years
Brings ActionView to webmachine-ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

< 5.0, >= 3.2
< 5.0, >= 3.2
 Project Readme

Webmachine::Actionview Build Status

Integration of some Rails-style view conventions into Webmachine. Uses your resource as a view context.

Installation

Add this line to your application's Gemfile:

gem 'webmachine-actionview'

And then execute:

$ bundle

Or install it yourself as:

$ gem install webmachine-actionview

Usage

Include Webmachine::ActionView::Resource in resources you want to use ActionView. Somewhere in your app's startup, you'll need to tell it where views live and (optionally) what handlers you're supporting, for example:

Webmachine::ActionView.configure do |config|
  config.view_paths = [MY_VIEWS_PATH]
  config.handlers = [:erb, :haml, :builder]
end

In your resource, you'll need to render the view at some point. Rendering is broadly similar to that in Rails. The simplest thing you can do is this:

class HomeResource < Webmachine::Resource
  include Webmachine::ActionView::Resource
  def to_html
    render
  end
end

This will look for a template called "home" in your Webmachine::ActionView.configuration.view_paths. By default, this will look for an application layout of layouts/application.

You can be more specific:

render template: 'other_template', layout: 'mini'

You can suppress a layout:

render layout: nil
# or
render layout: false

Your resource itself is used as the view context. This means that you can use instance variables as you would in Rails. For example:

class CustomerResource < Webmachine::Resource
  include Webmachine::ActionView::Resource

  def resource_exists?
    @customer = Customer.find(some_id)
  end

  def to_html
    render
  end
end

And in an associated customer.html.erb template, @customer will be available:

<p class="name"><%= @customer.name %></p>

You can also render partials from your views:

render partial: 'shared/my_partial'

Partials are subject to the same conventions as Rails, i.e. their filenames begin with an underscore, but no underscore is required when making a call to render partial: 'some_partial'.

Thanks

This gem came about a lot quicker due to someone else already having fiddled with the internals of ActionView. The link I originally found is https://github.com/newhavenrb/conferences/wiki/Using-Rails-without-Rails, so I think that means thanks to @drogus - pretty sure those are his slides linked to from that page.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request