Module: TransitionButtons::ViewHelper
- Defined in:
- lib/transition_buttons/view_helper.rb
Instance Method Summary collapse
-
#available_events(record, machine: nil, user: nil) ⇒ Object
The raw permitted-event list, for callers who want to render their own UI.
-
#transition_buttons_for(record, machine: nil, user: nil, **html_options) ⇒ Object
Renders one button per event the current user may perform on
recordright now, each POSTing to the record's membertransitionroute.
Instance Method Details
#available_events(record, machine: nil, user: nil) ⇒ Object
The raw permitted-event list, for callers who want to render their own UI.
<% available_events(@post).each do |event| %> ... <% end %>
33 34 35 |
# File 'lib/transition_buttons/view_helper.rb', line 33 def available_events(record, machine: nil, user: nil) (record, machine: machine, user: user).permitted_events end |
#transition_buttons_for(record, machine: nil, user: nil, **html_options) ⇒ Object
Renders one button per event the current user may perform on record
right now, each POSTing to the record's member transition route.
<%= transition_buttons_for(@post) %>
<%= transition_buttons_for(@post, machine: :review_state) %>
<%= transition_buttons_for(@post, user: some_user, class: "btn") %>
user: defaults to current_user when the view exposes it. Remaining
keyword options are forwarded to each button_to as HTML options.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/transition_buttons/view_helper.rb', line 12 def (record, machine: nil, user: nil, **) resolver = (record, machine: machine, user: user) adapter = TransitionButtons.config.state_machine_adapter path = (record) = resolver.permitted_events.map do |event| ( adapter.event_label(record, event, machine: resolver.machine), path, method: :post, params: {event: event, machine: resolver.machine}, ** ) end safe_join() end |