PolarisFormBuilder
Use Shopify Polaris Web Components as a Rails form builder, while keeping Rails form semantics.
- Polaris Web Components docs: https://shopify.dev/docs/api/app-home/polaris-web-components
What This Gem Does
- Provides
PolarisFormBuilder::FormBuilderas a drop-in Rails form builder. - Provides
polaris_form_withfor explicit per-form opt-in. - Integrates via Rails Engine so helpers are available in ActionView.
- Maps model validation errors to Polaris component
errorattributes. - Preserves Rails helper behavior (
name,value,checked, etc.) by building on top ofsuper.
Requirements
- Ruby
>= 3.1.0 - Rails app using
form_with/ActionView::Helpers::FormBuilder
Installation
bundle add polaris_form_builder
bundle installUsage
Recommended: Opt in per form
<%= polaris_form_with model: @user do |f| %>
<%= f.text_field :email, placeholder: "Enter email" %>
<%= f.password_field :password %>
<%= f.text_area :bio %>
<%= f.check_box :agree_terms %>
<%= f.submit "Create Account" %>
<% end %>Global default builder
# config/application.rb (or environment files)
config.action_view.default_form_builder = PolarisFormBuilder::FormBuilderThen regular form_with will use Polaris components automatically.
<%= form_with model: @user do |f| %>
<%= f.text_field :email %>
<%= f.password_field :password %>
<%= f.submit %>
<% end %>Supported Helpers
Core Rails-style fields
text_fieldnumber_fieldemail_fieldpassword_fieldurl_fieldsearch_fieldcolor_fielddate_field-
file_field(drop_zonealias) text_areacheck_boxselectsubmit
Polaris-oriented helpers
drop_zonemoney_fieldcolor_pickerdate_pickerswitchchoice_list
Validation Error Mapping
When your model has errors, corresponding Polaris components receive error automatically.
class User < ApplicationRecord
validates :email, presence: true
end<%= polaris_form_with model: @user do |f| %>
<%= f.text_field :email %>
<% end %>If @user.errors[:email] is present, the rendered Polaris field gets an error attribute.
Development
bin/setup
bin/rubocop
rake test
bin/ciUseful commands:
rake test_unit
rake test_integration
rake test_playground
bin/consoleRelease
- Update
lib/polaris_form_builder/version.rb. - Update
CHANGELOG.md. - Run
bin/ci. - Publish:
bundle exec rake releaseContributing
Issues and pull requests are welcome:
This project follows the Contributor Covenant Code of Conduct.
License
Released under MIT. See LICENSE.txt.