ActionController::Base
Inherits CRails::Routes::UrlHelpers < ActionController::ConditionalGet < ActionView::Helpers < ActionView::Helpers::RecordIdentifier < ActionView::Helpers::ViteHelper < ActionView::Helpers::CsrfHelper < ActionView::Helpers::CacheHelper < ActionView::Helpers::FormHelper < ActionView::Helpers::FormTagHelper < ActionView::Helpers::FormOptionsHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::FormOptionsHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::FormTagHelper < ActionView::Helpers::FormOptionsHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::EmbedFileHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::AssetTagHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::UrlHelper < ActionView::Helpers::TagHelper < ActionView::Helpers::NumberHelper < ActiveSupport::NumberHelper < ActionView::Helpers::TextHelper < ActionView::Helpers::TagHelper < ERB::Rendering < ActionController::DataStreaming < ActionController::RequestForgeryProtection < ActionController::RateLimiting < Reference < Object
Constructors
Instance methods
Overwritten by codegen in concrete controllers: .json.jbuilder-шаблоны этого контроллера для render(template:) — полный путь ("posts/show.json.jbuilder" / "posts/show") или имя экшена ("show").
Overwritten by codegen in concrete controllers: true для экшенов, у которых есть #{action}.json.jbuilder (implicit render по format=json).
ActionController::Live hook (Iteration 9): перекрывается методом
__live_dispatch модуля Live — экшен уходит в отдельный fiber,
ответ стримится с backpressure. Без include — прямой вызов.
Rails parity: route params merge with the query/body, and the dispatched controller/action names land in params too (CanCanCan's controller resource reads params["action"]/params["controller"]).
Overridden by RequestForgeryProtection (protect_from_forgery): non-XHR JavaScript responses to GET after a marked request raise InvalidCrossOriginRequest. Runs right before the body is committed, where a raise can still map to 422.
Rails parity: render не сбрасывает уже назначенный response.status — статус ставится только явным :status (паттерн «response.status = X; render(plain:)» в контроллерах должен отдавать X, а не 200).
render(template:) — .json.jbuilder-шаблон, скомпилированный на этапе сборки через JbuilderHandler (шард jbuilder.cr; приложение с .json.jbuilder-вьюхами обязано require "jbuilder_cr" — без шарда хендлер не разрешится, как в Rails без гема хендлер не зарегистриро- ван). Путь — полный относительно корня вьюх с расширением или без ("posts/show.json.jbuilder" / "posts/show") либо имя экшена ("show"). Только именованный аргумент: перегрузка с позиционной строкой (Rails render "posts/show", formats: :json) конфликтует с render(json : String) — позиционная строка занята телом JSON-ответа (документированное отклонение).
Macros
Shared only/except/if/unless condition for filter callbacks;
expands to a boolean expression over the action method argument.
Args arrive pre-extracted (nil when absent) so empty opts never
round-trip through generated code.
around_action :set_time_zone / around_action only: [:show] do ... end
The filter method (or block) receives the action continuation via
yield and MUST call it.
before_action :authenticate, only: [:index] / except: / if: / unless: Unknown keys are a compile error (see protect_from_forgery): a silently ignored option masks a filter that never runs as intended.
Declare the typed params schema for one or more actions:
typed_params(:create, :update) do
required :title, String, min_size: 3
optional :admin, Bool?
required :author do
required :name, String
end
end
Generates a <Action>Params result class with typed getters and an
<action>_params controller helper (raises TypedParams::Invalid →
422). Schemas are registered for the OpenAPI builder.