Module: ReactEmailRails::ActionMailer
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/react_email_rails/action_mailer.rb
Constant Summary collapse
- SHARED_FILTER_OPTIONS =
‘react_email_share` kwargs reserved for `before_action` filtering, not prop data.
[:if, :unless, :only, :except].freeze
Instance Method Summary collapse
- #mail(headers = {}, &block) ⇒ Object
-
#react_email_share(hash = nil, **props, &block) ⇒ Object
Share props from within an action, e.g.
Instance Method Details
#mail(headers = {}, &block) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/react_email_rails/action_mailer.rb', line 33 def mail(headers = {}, &block) return super unless headers.is_a?(Hash) && headers.key?(:react) headers = headers.dup react = headers.delete(:react) props = headers.delete(:props) if headers.key?(:props) deep_merge = headers.delete(:deep_merge) if headers.key?(:deep_merge) component, resolved_props = ReactEmailRails::PropsResolver.new(self).resolve(react, props) resolved_props = ReactEmailRails::SharedProps.new(self).merge_into( resolved_props, deep_merge: react_email_deep_merge?(deep_merge), ) = ReactEmailRails.configuration.(self) rendered = ReactEmailRails.render(component:, props: resolved_props, render_options:) super(headers) do |format| format.html { rendered.html } format.text { rendered.text } if rendered.text.present? yield(format) if block end end |
#react_email_share(hash = nil, **props, &block) ⇒ Object
Share props from within an action, e.g. conditionally before calling ‘mail`.
29 30 31 |
# File 'lib/react_email_rails/action_mailer.rb', line 29 def react_email_share(hash = nil, **props, &block) react_email_append_shared(hash || props, block) end |