Module: MetaEvents::ControllerMethods
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/meta_events/controller_methods.rb
Overview
This module defines methods that we add to ActionController::Base if we’re being used with Rails.
Instance Method Summary collapse
-
#meta_events_define_frontend_event(category, event, properties = { }, options = { }) ⇒ Object
Declares a new “frontend event”.
-
#meta_events_defined_frontend_events ⇒ Object
Returns the set of defined frontend events.
- #meta_events_tracker ⇒ Object
Instance Method Details
#meta_events_define_frontend_event(category, event, properties = { }, options = { }) ⇒ Object
Declares a new “frontend event”. A frontend event is, at its core, a binding from a name to (an event name, a set of properties to fire with that event); by default, the name used is just the event name, without its normal prefix (i.e., foo_bar
, not ab1_foo_bar
).
You declare the frontend event here, on the server side; the server renders into the page this very binding, and the frontend JavaScript (meta_events.js.erb
) can pick up that data and expose it by very easy-to-use JavaScript functions.
category
is the category for your event;
18 19 20 21 22 23 24 25 26 |
# File 'lib/meta_events/controller_methods.rb', line 18 def (category, event, properties = { }, = { }) .assert_valid_keys(:name, :tracker) name = ([:name] || "#{category}_#{event}").to_s tracker = [:tracker] || @_meta_events_registered_clientside_events ||= { } @_meta_events_registered_clientside_events[name] = tracker.effective_properties(category, event, properties) end |
#meta_events_defined_frontend_events ⇒ Object
Returns the set of defined frontend events.
29 30 31 |
# File 'lib/meta_events/controller_methods.rb', line 29 def @_meta_events_registered_clientside_events || { } end |
#meta_events_tracker ⇒ Object
33 34 35 |
# File 'lib/meta_events/controller_methods.rb', line 33 def raise "You must implement the method #meta_events_tracker on your controllers for this method to work; it should return the MetaEvents::Tracker instance (ideally, cached, using just something like @tracker ||=) that you want to use." end |