-
Notifications
You must be signed in to change notification settings - Fork 7
Controllers
Public non-inherited instance methods are application actions (end-points).
Protected #execute
method is a wrapper for any action execute,
action-name (method-name) is the only argument.
In this method you can write or invoke before-hooks,
then call super
(which will also call ancestors #execute
method,
and only at the end target-method call), and after super
you can write (or invoke) after-hooks.
#execute
method can be mixed by include
(I don't recommend prepend
because it allows to have the same module multiple times
in the ancestors, i.e. end-point call chain).
You can handle errors by protected #server_error
method with exception
argument
(calling super
is recommended).
def index(method)
raise 'Error'
end
protected
def server_error(exception) # => 'Error'
@my_var = true
super # for rendering default_body response with @my_var
end
Private methods are just helpers (#model_params
, for example).
If you want to take out some scope of helpers (typically for reusing them in different controllers) — check Helpers wiki page.
Get current response body: body
. Set: body 'New body'
.
status
works in the same way.
There are also Hash-like request.headers
, response.headers
, cookies
and session
.
view
or render
(alias) receives file-name of template as String or Symbol
and options for Tilt,
and returns rendered file as a String.
path_to
method is for path building to any controller and its action:
path_to ArticlesController, :show, id: 2
gives path to ArticlesController#show(id)
with id
2.
Return value of called action (end-point) will be a body of the response,
but can be changed in after-hooks (code after super
inside #execute
).