Helpers
One of the more confusing concepts when getting started with Phlex is understanding how helper functions work. Unlike Rails helpers, Phlex helpers donβt leak state, which is beneficial for maintainability, but it does create a slight learning curve for Rails developers.
Traditional Rails βhelper functionsβ are modules included in view templates from the ./app/helpers
directory. While Phlex takes a different approach, it provides excellent interoperability with existing Rails helpers through a comprehensive adapter system.
Interoperability with Rails Helpers
Phlex ships with an extensive set of adapters that allow your Phlex views to interact with Rails helpers.
Remember that the Components::Base
class includes Rails route helpers by default:
class Components::Base < Phlex::HTML
include Phlex::Rails::Helpers::Routes
end
π Unlock content
Pre-order this course to unlock this video, source code, and content.
βββ βββββββ βββββββββββββββββββββββββββββ ββββββ ββββββββ ββββββ ββ βββββ βββ βββββββ ββββ βββββββββ βββ βββββββββββ ββββββ ββββ βββββββββ ββββββββββ ββββ βββββ ββββββ
ββββ βββ ββββ ββββββββββ βββββββ ββ ββββ βββββ ββββββ βββ βββ βββββββ ββββ ββββββββ ββ ββββ βββββββββ ββββββββ
class Components::Base < βββββ::ββββ
β ββββββββ βββββ βββββ βββββββ
include βββββ::βββββ::βββββββ::ββββββ
β βββββββ ββββββββββββββββββββββ ββββββββ ββββββ
include βββββ::βββββ::βββββββ::βββββββββ
end
Donβt include everything in Components::Base
ββββββββ βββ βββββββββββ ββββββ ββββ βββββββ ββββββ ββββ βββββββββ ββ βββ ββββ βββββ ββββββ ββββ βββ ββββ βββββββββ ββββββ
βββ ββββββββ βββ βββββββββββββββββββ ββββββ βββββββ ββββ ββββ βββββ ββ β ββββββββ βββββββββ ββ ββββββββ ββ βββ ββββββββ βββββββ ββ ββ βββββββββββββββββ ββββββββ ββββ βββββββββ βββββββββββ βββ βββββββ ββ βββββββββ ββββββ ββββββ ββ βββββ βββ βββ βββββββββββ ββββββ
class Views::Base < ββββββββββ::ββββ
β βββββββ βββββββββββββββββββββ ββββββ
include βββββ::βββββ::βββββββ::βββββββββββββββββ
β βββββββ ββββββββββββββββββββββββββ ββββββ
include βββββ::βββββ::βββββββ::βββββββββββββββββββββ
β βββ
end
The full list of adapters
ββββββββ βββ ββββββββ βββββ βββββββ βββ ββββββββββββ ββββββββββ ββ βββ βββββ βββββ βββββββββββ ββββββββ ββββ ββββ βββββββ ββββ βββ ββββββ βββββ βββββββββ
Building custom Rails helper adapters
ββ ββββ ββββββββ βββββββββββ βββ ββββ ββββββ ββββ ββββββββ βββ βββββ ββββ ββ βββββ ββββββ βββββββββ ββββββββ β ββββββββ βββββββββ βββββββββββ ββββββ ββββββ ββββ ββββ βββββ ββββββββββ ββββ βββββββββ ββ ββββ ββββββββ ββββββ βββββββββββββ βββ ββββββββββββββββ
ββββ ββββββββ ββββββ ββββββββ ββ ββββββββββ ββββββββββ ββββ βββββ βββ βββ ββββββ βββββ ββββββββ βββ ββββββ βββββββββ
Value helper adapter
βββββ ββββββββ βββββββ ββββ ββββββββββββββββββ ββββββββββββββββββββββββββ βββ βββββββββ ββββ ββββββ ββββββββββ βββ ββββββ ββββ βββββββ ββββ βββ ββ ββββββββ ββββββββ ββββ βββ ββββββββββ
ββββββ ββββ βββββ ββββ ββββ ββ ββββββββ βββ ββββββββββ
βββAbout <%= βββββββββββββββββ(1.βββ.βββ) %> I went outside.ββββ
βββββ βββββββ βββ ββββββββββ βββββ βββ βββββββββββββββββββββ βββββββ ββββββ βββ βββ βββββββββ ββββββ ββ ββββββββββββ
module Phlex::Rails::Helpers::Pluralize
extend βββββ::βββββ::ββββββββββββ
β ββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββ def βββββββββ(...) = nil
end
Output helper adapter
ββββ βββββ ββββββββ ββββ ββ βββββββββββ βββ ββββ ββββββ ββββββ βββ ββββββ ββββ ββββ βββ ββ ββββββββ ββββββββ ββββ βββ ββββββββββ
ββββ ββ ββββββ ββββ ββββββββββ ββββ βββββββ βββ ββββββ ββββββββ βββ ββββ ββββββ βββββββ ββ βββ βββββββββ βββββββ βββββ βββββββ β ββββββ
<%= βββββββββ(model: ββββ) do |β| %>
<%= β.βββββ :name %>
<%= β.ββββββββββ :name %>
<%= β.ββββββ "Submit" %>
<% end %>
βββ βββββββ ββββββ ββ ββββ βββββββββ β βββββ ββββββ βββββ ββββ βββ ββββββββ ββββ ββββ βββββββ βββ ββ ββββββββ βββββ
<%= βββββββ "Hello, World!", βββββββββ do %>
ββββHello, World!βββββ
<% end %>
βββββββ ββββ ββββββ ββββββ ββββ ββ ββββββββββ βββββ βββ ββββββββββββββββββββββ βββββββ
ββββββ βββ βββ βββββββ ββββββ βββββββ ββ ββββββββββββ
module Phlex::Rails::Helpers::LinkTo
extend βββββ::βββββ::ββββββββββββ
β ββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββ def βββββββ(...) = nil
end
Adapters are transitional
βββββ ββ ββββ βββββ ββββββββ ββββββ ββββββ ββββ βββββββ ββ βββββββ ββββ βββββββ βββ ββββββββββ ββββββββ ββ βββ ββββββ ββββ ββββββββββββ ββββββ ββββββββ ββββ βββββ βββββββ βββ βββββ ββββ βββββββ ββ βββββββ βββββ ββββββββββββ ββββ βββββ ββββββ βββββββββ βββββββ ββββ ββββ ββββ ββ βββββ ββ ββββ ββββ ββββββββββ
βββββ ββββββββ βββββββ β ββββββββββ ββββββ βββ βββββββββββ ββββββββ ββββ βββββββ ββββ ββββββ ββββββββ ββββ ββββ βββββββββ ββββ ββ ββββββ βββββββββββββ βββββββββ ββ ββββ βββββ ββββββ ββββββββ ββββββββ βββββββββββ ββββββββββββββββ ββββ ββββ ββββββ βββββ ββββββββββ βββ βββββββ βββββββββββ βββ ββββββββββββββββ