Class: Unpoly::Rails::Inspector

Inherits:
Object
  • Object
show all
Defined in:
lib/unpoly/rails/inspector.rb

Overview

This object allows the server to inspect the current request for Unpoly-related concerns such as "is this a page fragment update?".

Available through the #up method in all controllers, helpers and views.

Instance Method Summary collapse

Constructor Details

#initialize(controller) ⇒ Inspector


10
11
12
# File 'lib/unpoly/rails/inspector.rb', line 10

def initialize(controller)
  @controller = controller
end

Instance Method Details

#targetObject

If the current request is a fragment update, this returns the CSS selector of the page fragment that should be updated.

The Unpoly frontend will expect an HTML response containing an element that matches this selector. If no such element is found, an error is shown to the user.

Server-side code is free to optimize its response by only returning HTML that matches this selector.


34
35
36
# File 'lib/unpoly/rails/inspector.rb', line 34

def target
  request.headers['X-Up-Target']
end

#title=(new_title) ⇒ Object

Forces Unpoly to use the given string as the document title when processing this response.

This is useful when you skip rendering the <head> in an Unpoly request.


58
59
60
# File 'lib/unpoly/rails/inspector.rb', line 58

def title=(new_title)
  response.headers['X-Up-Title'] = new_title
end

#up?Boolean Also known as: unpoly?

Returns whether the current request is an page fragment update triggered by an Unpoly frontend.


18
19
20
# File 'lib/unpoly/rails/inspector.rb', line 18

def up?
  target.present?
end

#validate?Boolean

Returns whether the current form submission should be validated (and not be saved to the database).


41
42
43
# File 'lib/unpoly/rails/inspector.rb', line 41

def validate?
  validate_name.present?
end

#validate_nameObject

If the current form submission is a validation, this returns the name attribute of the form field that has triggered the validation.


49
50
51
# File 'lib/unpoly/rails/inspector.rb', line 49

def validate_name
  request.headers['X-Up-Validate']
end