1
0
Fork 0
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:
Javan Makhmali 2018-02-12 10:16:49 -05:00
parent d8fd858c9c
commit 63add5acc4
3 changed files with 55 additions and 1 deletions

View 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

View file

@ -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

View file

@ -18,7 +18,7 @@
<div class="field">
<%= form.label :content %>
<%= form.text_area :content %>
<%= form.active_text_field :content %>
</div>
<div class="actions">