I have built a small rails 6 app utilising the new ActionText feature. However it appears that there is no support in ActiveAdmin for the new field type (rich_text_area)
I have tried using the gem active_admin_trix, which works(if you load trix v1.2 in the active_admin, but it does not display the existing value of the field in the edit field
I have also tried just loading the trix library and using f.rich_text_area ie:
form do |f|
f.semantic_errors *f.object.errors.keys
f.inputs do
f.input :name
f.rich_text_area :description
end
f.actions
end
While this works OK it does not display the "label" as the field does not fit correctly in side the ActiveAdmin layout. It does however display the current content correctly
Has anyone else successfully used ActionText in ActiveAdmin
My guess is that Formtastic support is required, but I have not been able to find any information on ActionText support in Formtastic either
I solved it creating a custom formtastic input and a bit of CSS
I placed the following in app/admin/inputs/action_text_input.rb
class ActionTextInput < Formtastic::Inputs::StringInput
def to_html
input_wrapping do
editor_tag_params = {
input: input_html_options[:id],
class: 'trix-content'
}
editor_tag = template.content_tag('trix-editor', '', editor_tag_params)
hidden_field = builder.hidden_field(method, input_html_options)
label_html + hidden_field + editor_tag
end
end
end
Add the following to the end of /app/assets/stylesheets/active_admin.scss
.active_admin {
form trix-editor {
margin-left: 20%;
width: calc(80% - 17px);
}
}
You then call it in your ActiveAdmin form with
f.input :your_active_text_field, as: :action_text
Additionally, as suggested in the answer by @Robert, add
:your_input_field
to permit_params
in your_active_admin_page.rb
//= require trix/dist/trix
to assets/javascripts/active_admin.js
@import "trix/dist/trix";
to assets/stylesheets/active_admin.scss
Updated CSS
For more recent activeadmin releases, the width is a bit different. Consider the following CSS to handle that and the link dialog when you click the link
button.
.active_admin {
form trix-editor, form .trix-dialogs .trix-dialog--link {
margin-left: 20%;
width: calc(80% - 22px);
border: 1px solid #c9d0d6;
border-radius: 3px;
}
form trix-editor {
min-height: 100px;
margin-top: 10px;
padding: 8px 10px 7px;
background-color: white;
&:focus {
border: 1px solid #99a2aa;
box-shadow: 0 0 4px #99a2aa;
outline: none;
}
}
form .trix-dialogs .trix-dialog--link {
margin-top: 10px;
margin-bottom: 10px;
padding: 10px;
background-color: #eeeeee;
.trix-button-group {
margin-top: 10px;
}
}
}
Additionally, add
:your_input_field
to permit_params
in your_active_admin_page.rb
//= require trix/dist/trix
to assets/javascripts/active_admin.js
@import "trix/dist/trix";
to assets/stylesheets/active_admin.scss
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With