Matestack Ui Core
AboutMatestack Ui CoreMatestack Ui VueJsMatestack Ui Bootstrap
3.0
3.0
  • Welcome
  • Migrating from 2.x to 3.0
  • Getting started
    • Installation & Update
    • Hello World
  • HTML Rendering
    • Basic Rendering Mechanism
    • Integrating Action View Helpers
    • Integrating Rails Views or Partials
  • Components
    • API
    • Usage on Rails Views
    • Usage on Matestack Pages
    • Usage on Matestack Layouts
    • Usage in Isolation
    • Registry
  • Pages
    • API
    • Rails Controller Integration
  • Layouts
    • API
    • Rails Controller Integration
Powered by GitBook
On this page
  • Components reusing partials
  • Components reusing views

Was this helpful?

Edit on GitHub
  1. HTML Rendering

Integrating Rails Views or Partials

Matestack rails_render component offers the possibility to render a view or partial by passing its name and required params to it.

Components reusing partials

Imagine the partial app/views/products/_teaser.html.erb containing following content:

<%= link_to product_path(product), class: 'product-teaser' do %>
  <div>
    <h2><%= product.name %></h2>
    <p><%= product.description %></p>
    <b><%= product.price %></b>
  </div>
<% end %>
class Components::Products::Trending < Matestack::Ui::Component

  def prepare
    @products = Product.where(trending: true)
  end

  def response
    h1 'Trending products'
    @products.each do |product|
      rails_render partial: '/products/teaser', locals: { product: product }
    end
  end

end

As you see, we used the rails_render component here to render our products teaser partial. Given the string rails searches for a partial in app/views/products/_teaser.html.erb. As our product teaser partial uses a product we pass in a product as a local.

rails_render works with ERB, Haml and Slim Templates, as long as you have installed and configured the desired templating engine correctly in your Rails app.

Components reusing views

As mentioned above the rails_render component can not only render partials but also views. Following Rails view can be reused within a Matestack component:

app/views/static/index.html.erb

<main>
  <%= render partial: 'products/teaser', collection: products, as: :product %>
</main>

<div>
  <%= link_to 'All products', products_path %>
</div>
class Components::Products::Index < Matestack::Ui::Component

  def prepare
    @products = Product.where(trending: true)
  end

  def response
    rails_render template: '/static/index', locals: { products: @products }
  end

end
PreviousIntegrating Action View HelpersNextAPI

Last updated 3 years ago

Was this helpful?