Skip to content

Show pages

The show page renders one record from its declared attributes. Each attribute is a detail row, using the same formatters as the index, so a value renders the same way in both places.

1
2
3
4
attribute('title');
attribute('published', :format<boolean>);
attribute('body',      :display({ .body.substr(0, 200) }));
attribute('author');     # an association

A :display block computes the row value; otherwise the value is read from the column and run through the named :format.

An attribute value is HTML-escaped by default. Declare an attribute :html to render its value as trusted markup instead, bypassing escaping and any :format (see raw markup):

1
attribute('preview', :html, :display({ .rendered-html }));

Action panel

A sidebar panel holds the per-record actions: Edit (links to the edit form), Delete (a destroying form with a confirmation), and any custom member actions declared for the resource. Each control is hidden when the authorization policy forbids it. See Destroy, batch, and custom actions.

Associations

When an attribute names an association, the show page renders it from the relationship rather than as a column:

  • A belongs-to (or has-one) attribute renders as a link to the associated record's admin show page, when that model is itself a registered resource. A missing association renders a dash, never a broken link.
  • A has-many (or has-and-belongs-to-many) attribute renders as a compact sub-table, each row linking into the associated resource, capped with an "and N more" line.

Association kind and target are detected through the ORM's reflection, so the link targets are resolved from the registry by model.