Module: Superview::Actions

Extended by:
ActiveSupport::Concern
Defined in:
lib/superview/actions.rb

Overview

Include in controllers to map action names to class names. This makes it possible to embed Phlex components directly into Rails controllers without having to go through other templating systems like Erb.

Instance methods will be assigned to views that have attr_accessor methods.

Consider a blog post controller:

class PostsController < ApplicationController
  include Superview::Actions

  before_action :load_post

  class Show < Phlex::HTML
    attr_accessor :post

    def view_template(&)
      h1 { @post.title }
      div(class: "prose") { @post.body }
    end
  end

  private
    def load_post
      @post = Post.find(params[:id])
    end
end

The @post variable gets set in the Show view class via Show#post=.