Skip to content

datarockets/rails-views

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •