Class: RenderTurboStream::ControllerLibs
- Inherits:
-
Object
- Object
- RenderTurboStream::ControllerLibs
- Defined in:
- lib/render_turbo_stream/controller_libs.rb
Instance Method Summary collapse
- #action_errors(actions) ⇒ Object
- #additional_actions(if_success_add, if_error_add, add) ⇒ Object
- #generate_action(controller_path, target_id, action, partial, template, locals) ⇒ Object
- #generate_flash(model_name, controller_action, if_success_notices, if_error_alerts, add_notices, add_alerts) ⇒ Object
-
#initialize(save_action) ⇒ ControllerLibs
constructor
A new instance of ControllerLibs.
Constructor Details
#initialize(save_action) ⇒ ControllerLibs
Returns a new instance of ControllerLibs.
4 5 6 |
# File 'lib/render_turbo_stream/controller_libs.rb', line 4 def initialize(save_action) @save_action = save_action end |
Instance Method Details
#action_errors(actions) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/render_turbo_stream/controller_libs.rb', line 91 def action_errors(actions) r = [] actions.each do |a| if a.is_a?(Hash) unless a[:target].present? r.push("Missing attribute :target for => «#{a}»") end unless a[:partial].present? r.push("Missing attribute :partial for => «#{a}»") end unless a[:action].present? r.push("Missing attribute :action for => «#{a}»") end elsif a.is_a?(Array) unless a.first.is_a?(String) || a.first.is_a?(Symbol) r.push("Assuming a command, but the first attribute must be a string or symbol => «#{a}»") end end end r end |
#additional_actions(if_success_add, if_error_add, add) ⇒ Object
73 74 75 76 77 |
# File 'lib/render_turbo_stream/controller_libs.rb', line 73 def additional_actions(if_success_add, if_error_add, add) (@save_action ? make_actions(if_success_add) : make_actions(if_error_add)) + make_actions(add) end |
#generate_action(controller_path, target_id, action, partial, template, locals) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/render_turbo_stream/controller_libs.rb', line 79 def generate_action(controller_path, target_id, action, partial, template, locals) libs = RenderTurboStream::Libs target = libs.target_id_to_target(target_id) if partial _partial = libs.partial_path(controller_path, partial) [target: target, partial: _partial, locals: locals, action: action] else _template = libs.template_path(controller_path, template) [target: target, template: _template, locals: locals, action: action] end end |
#generate_flash(model_name, controller_action, if_success_notices, if_error_alerts, add_notices, add_alerts) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/render_turbo_stream/controller_libs.rb', line 8 def generate_flash(model_name, controller_action, if_success_notices, if_error_alerts, add_notices, add_alerts) target_id = (Rails.configuration.x.render_turbo_stream.flash_target_id rescue nil) raise "Missing configuration: config.x.render_turbo_stream.flash_target_id" unless target_id partial = Rails.configuration.x.render_turbo_stream.flash_partial raise "Missing configuration: configuration.x.render_turbo_stream.flash_partial" unless partial turbo_action = Rails.configuration.x.render_turbo_stream.flash_turbo_action raise "Missing configuration: configuration.x.render_turbo_stream.flash_turbo_action" unless turbo_action if @save_action notices = if if_success_notices if if_success_notices.is_a?(String) [if_success_notices] else if_success_notices end else str = I18n.t( "activerecord.render_turbo_stream_success.#{controller_action}" ) [format(str, model_name: model_name)] end alerts = [] else alerts = if if_error_alerts if if_error_alerts.is_a?(String) [if_error_alerts] else if_error_alerts end else str = I18n.t( "activerecord.render_turbo_stream_errors.#{controller_action}" ) [format(str, model_name: model_name)] end notices = [] end turbo_actions = [] notices += add_notices.to_a alerts += add_alerts.to_a notices.each do |notice| next unless notice.present? flash_stream = { target: RenderTurboStream::Libs.target_id_to_target(target_id), partial: partial, action: turbo_action, locals: { success: true, message: notice } } turbo_actions.push(flash_stream) end alerts.each do |alert| next unless alert.present? flash_stream = { target: RenderTurboStream::Libs.target_id_to_target(target_id), partial: partial, action: turbo_action, locals: { success: false, message: alert } } turbo_actions.push(flash_stream) end { turbo_actions: turbo_actions, alerts: alerts, notices: notices } end |