Module: TransitionButtons::ViewHelper

Defined in:
lib/transition_buttons/view_helper.rb

Instance Method Summary collapse

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)
  transition_buttons_resolver(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 transition_buttons_for(record, machine: nil, user: nil, **html_options)
  resolver = transition_buttons_resolver(record, machine: machine, user: user)
  adapter = TransitionButtons.config.state_machine_adapter
  path = transition_buttons_path(record)

  buttons = resolver.permitted_events.map do |event|
    button_to(
      adapter.event_label(record, event, machine: resolver.machine),
      path,
      method: :post,
      params: {event: event, machine: resolver.machine},
      **html_options
    )
  end

  safe_join(buttons)
end