mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Extract BC3's rich_text_field helper
This commit is contained in:
parent
d8fd858c9c
commit
63add5acc4
3 changed files with 55 additions and 1 deletions
46
app/helpers/active_text/tag_helper.rb
Normal file
46
app/helpers/active_text/tag_helper.rb
Normal file
|
@ -0,0 +1,46 @@
|
|||
module ActiveText
|
||||
module TagHelper
|
||||
cattr_accessor(:id, instance_accessor: false) { 0 }
|
||||
|
||||
def active_text_field_tag(name, value = nil, options = {})
|
||||
options = options.symbolize_keys
|
||||
options[:input] ||= "trix_input_#{ActiveText::TagHelper.id += 1}"
|
||||
|
||||
editor_tag = content_tag("trix-editor", "", options)
|
||||
input_tag = hidden_field_tag(name, value, id: options[:input])
|
||||
|
||||
editor_tag + input_tag
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module ActionView::Helpers
|
||||
class Tags::ActiveText < Tags::Base
|
||||
include ActiveText::TagHelper
|
||||
|
||||
delegate :dom_id, to: ActionView::RecordIdentifier
|
||||
|
||||
def render
|
||||
options = @options.stringify_keys
|
||||
add_default_name_and_id(options)
|
||||
options["input"] ||= dom_id(object, [options["id"], :trix_input].compact.join("_"))
|
||||
active_text_field_tag(options.delete("name"), editable_value, options)
|
||||
end
|
||||
|
||||
def editable_value
|
||||
value.try(:to_trix_html)
|
||||
end
|
||||
end
|
||||
|
||||
module FormHelper
|
||||
def active_text_field(object_name, method, options = {})
|
||||
Tags::ActiveText.new(object_name, method, self, options).render
|
||||
end
|
||||
end
|
||||
|
||||
class FormBuilder
|
||||
def active_text_field(method, options = {})
|
||||
@template.active_text_field(@object_name, method, objectify_options(options))
|
||||
end
|
||||
end
|
||||
end
|
|
@ -10,5 +10,13 @@ module ActiveText
|
|||
include ActiveText::Attribute
|
||||
end
|
||||
end
|
||||
|
||||
# FIXME: Aren't helpers supposed to load automatically?
|
||||
# https://github.com/rails/rails/issues/26627 ?
|
||||
initializer "active_text.helper" do
|
||||
ActiveSupport.on_load(:action_controller_base) do
|
||||
helper ActiveText::TagHelper
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
<div class="field">
|
||||
<%= form.label :content %>
|
||||
<%= form.text_area :content %>
|
||||
<%= form.active_text_field :content %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
|
|
Loading…
Reference in a new issue