0.0
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Real view objects for Rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies

Runtime

 Project Readme

Rails::Views

View Components for Ruby and Rails.

The gem provides view models for Ruby web applications. View models are plain objects that represent a part of the web page. View models can also render views, and be nested.

This gem bases on cells.

Installation

Add this line to your application's Gemfile:

gem 'rails-views'

And then execute:

$ bundle

Usage

This gem bases on cells, but includes only Concept logic.

A view is a light-weight class with show.slim temlate with base view logic.

class Comment::Cell < Rails::View

  private

  property :body, :author

  def author_link
    link_to "#{author.email}", author
  end
end

Rendering

Gem provides logic for rendering cells instead of ActionView templates.

def CommentsController < ApplicationController
  def index
    render cell: true # will render Comments::Cell
  end

  def show
    @comment = Comment.find(params[:id])

    render cell: :show, model: @comment # will render Comments::Show::Cell with @comment as model
  end

  def new
    @comment = Comment.new
    @user = User.find(params[:user_id])

    render cell: 'user/comment', model: @comment, options: {user: @user} # will render User::Comment::Cell with @comment as model and user options
  end
end

Helpers

Also gem provides new helpers for rails.

Flash

Provide method for working with flash.

= flash[:notice]

Render partials array

Method render_each_and_join can render array of templates and join it in one string.

class User::Info::Cell < Rails::View
  private

  def parts_of_info
    %w(contact_information about jobs transactions_list)
  end

  def info_body
    render_each_and_join(parts_of_info)
  end
end

class User::ShortInfo::Cell < User::Info::Cell
  private

  def parts_of_info
    %w(contact_information about)
  end
end

Options

Provide options reader. You can have automatic readers to the options's fields by using ::option

class User::Comment::Cell < Rails::View
  private
    options :user # delegate to options[:user]

    delegate :email, to: :user, prefix: true
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Run the test suite and check the output (rake)
  4. Add tests for your feature or fix (please)
  5. Commit your changes (git commit -am 'Add some feature')
  6. Push to the branch (git push origin my-new-feature)
  7. Create new Pull Request

Bug reports and pull requests are welcome on GitHub at https://github.com/datarockets/rails-views

License

The gem is available as open source under the terms of the MIT License.