Rails Controller Integration

Pages are used as Rails view substitutes and therefore called in a Rails controller action:

app/controllers/some_controller.rb
class SomeController < ApplicationController

  include Matestack::Ui::Core::Helper

  def overview
    render Pages::SomePage
  end

end

A Matestack page will in this case be yielded into the Rails layout, unless the Rails layout is disabled in the controller via:layout false

Passing data to pages

Sometimes you want to pass in data from the calling controller action into the page. This works the same way as seen at components:

class SomeController < ActionController::Base

  include Matestack::Ui::Core::Helper

  def some_page
    render SomePage, foo: 'bar', bar: 'baz'
  end

end
class SomePage < Matestack::Ui::Page

  required :foo
  optional :bar

  def response
    div id: "my-page" do
      plain context.foo # "bar"
      plain context.bar # "baz"
    end
  end

end

Last updated