Module: AdminTurboTable

Extended by:
ActiveSupport::Concern
Included in:
Admin::AuditLogEntriesController, Admin::ContentBlocksController, Admin::MediaAssetsController, Admin::PermissionsController, Admin::RedirectsController, Admin::UsersController, Admin::VisitorErrorsController
Defined in:
lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb

Instance Method Summary collapse

Instance Method Details

#turbo_frame_idObject



29
30
31
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 29

def turbo_frame_id
  request.headers["Turbo-Frame"]
end

#turbo_frame_request?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 6

def turbo_frame_request?
  request.headers["Turbo-Frame"].present?
end

#turbo_redirect_to(url) ⇒ Object



25
26
27
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 25

def turbo_redirect_to(url, **)
  redirect_to(url, **) unless turbo_frame_request?
end

#turbo_render_form(template, status: :unprocessable_entity) ⇒ Object

Re-render a form template after a validation failure. Returns 422 so Turbo replaces the frame/page with the re-rendered form (and its error messages) instead of treating the response as a successful navigation.



21
22
23
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 21

def turbo_render_form(template, status: :unprocessable_entity)
  render template, status: status
end

#turbo_render_index(turbo_frame_id: "admin_table_content") ⇒ Object



10
11
12
13
14
15
16
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 10

def turbo_render_index(turbo_frame_id: "admin_table_content")
  if turbo_frame_request?
    render partial: turbo_frame_id, layout: false
  else
    render :index
  end
end

#turbo_stream_replace_table(turbo_frame_id: "admin_table_content", partial: nil) ⇒ Object



42
43
44
45
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 42

def turbo_stream_replace_table(turbo_frame_id: "admin_table_content", partial: nil)
  partial ||= turbo_frame_id
  render turbo_stream: turbo_stream.replace(turbo_frame_id, partial:)
end

#turbo_stream_request?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 33

def turbo_stream_request?
  request.headers["Accept"]&.include?("text/vnd.turbo-stream.html")
end

#turbo_stream_update_table(turbo_frame_id: "admin_table_content", partial: nil) ⇒ Object



37
38
39
40
# File 'lib/generators/ruby_cms/templates/controllers/concerns/admin_turbo_table.rb', line 37

def turbo_stream_update_table(turbo_frame_id: "admin_table_content", partial: nil)
  partial ||= turbo_frame_id
  render turbo_stream: turbo_stream.update(turbo_frame_id, partial:)
end