Sha256: b97658aea56bdbc14e4fdd09600c47c1398dbffde1bf1f8ccee433d5a2b1e596
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
module Trailblazer::Rails module Controller def run(operation, params=self.params, *dependencies) result = operation.( _run_params(params), *_run_runtime_options(*dependencies) ) @form = Trailblazer::Rails::Form.new(result["contract.default"], result["model"].class) @model = result["model"] yield(result) if result.success? && block_given? @_result = result end private # Override to tweak params. Not recommended. # Use a deserializer instead. def _run_params(params) params end # This is where we can inject Dry.RB containers and the like via dependencies. def _run_runtime_options(options={}, *dependencies) [_run_options(options), *dependencies] end # Override this to inject dependencies such as "current_user" # into the runtime options. def _run_options(options) options end module Render def render(cell=nil, options={}, *, &block) return super unless cell.kind_of?(::Cell::ViewModel) render_cell(cell, options) end def render_cell(cell, options) options = options.reverse_merge(layout: true) # render the cell. content = cell.() render( { html: content }.merge(options) ) end end include Render end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trailblazer-rails-1.0.0.beta1 | lib/trailblazer/rails/controller.rb |