class Marten::Handlers::RecordUpdate
- Marten::Handlers::RecordUpdate
- Marten::Handlers::Schema
- Marten::Handlers::Template
- Marten::Handlers::Base
- Reference
- Object
Overview
Handler allowing to update a model record by processing a schema.
This handler can be used to process a form, validate its data through the use of a schema, and update an existing record by using the validated data. It is expected that the handler will be accessed through a GET request first: when this happens the configured template is rendered and displayed, and the configured schema which is initialized can be accessed from the template context in order to render a form for example. When the form is submitted via a POST request, the configured schema is validated using the form data. If the data is valid, the model record that was retrieved is updated and the handler returns an HTTP redirect to a configured success URL.
class MyFormHandlers < Marten::Handlers::RecordUpdate
  model MyModel
  schema MyFormSchema
  template_name "my_form.html"
  success_route_name "my_form_success"
endIt should be noted that the redirect response issued will be a 302 (found).
The model class used to update the new record can be configured through the use of the #model class method. The
schema used to perform the validation can be defined through the use of the #schema class method. Alternatively,
the #schema_class method can also be overridden to dynamically define the schema class as part of the request
handling.
The #template_name class method allows to define the name of the template to use to render the schema while the
#success_route_name method can be used to specify the name of a route to redirect to once the schema has been
validated. Alternatively, the #sucess_url class method can be used to provide a raw URL to redirect to. The same
method can also be overridden at the instance level in order to rely on a custom logic to generate the sucess URL
to redirect to.
Included Modules
Extended Modules
Defined in:
marten/handlers/record_update.crClass Method Summary
- 
        .lookup_field : String
        
          Returns the name of the model field that will be used to retrieve the record (defaults to pk).
- 
        .model : DB::Model.class | Nil
        
          Returns the configured model class. 
- 
        .record_context_name(name : String | Symbol)
        
          Allows to configure the name to use to include the model record into the template context. 
- 
        .record_context_name : String
        
          Returns the name to use to include the model record into the template context (defaults to record).
Instance Method Summary
- 
        #context
        
          Returns a hash containing the template context or nil.
- 
        #initial_data
        
          Returns a hash of initial data, computed from the considered record, to prepare the schema. 
- 
        #process_valid_schema
        
          Produces the response when the processed schema is valid. 
- 
        #schema
        
          Returns the schema, initialized using the request data. 
Instance methods inherited from module Marten::Handlers::RecordRetrieving
  
  
    
      model : Model.class
    model, 
    
  
    
      queryset
    queryset, 
    
  
    
      record
    record
    
  
    
    
  
    
  Instance methods inherited from class Marten::Handlers::Schema
  
  
    
      context
    context, 
    
  
    
      post
    post, 
    
  
    
      process_invalid_schema
    process_invalid_schema, 
    
  
    
      process_valid_schema
    process_valid_schema, 
    
  
    
      put
    put, 
    
  
    
      schema
    schema, 
    
  
    
      schema_class
    schema_class, 
    
  
    
      success_url
    success_url
    
  
    
    
  Class methods inherited from class Marten::Handlers::Schema
  
  
    
      schema(schema : Marten::Schema.class | Nil)schema : Marten::Schema.class | Nil schema, success_route_name(success_route_name : String | Nil)
success_route_name : String | Nil success_route_name, success_url(success_url : String | Nil)
success_url : String | Nil success_url
Instance methods inherited from class Marten::Handlers::Template
  
  
    
      context
    context, 
    
  
    
      get
    get
    
  
    
    
  Class methods inherited from class Marten::Handlers::Template
  
  
    
      template_name : String | Nil
    template_name
    
  
  
    
  Instance methods inherited from module Marten::Handlers::Rendering
  
  
    
      get_response(content)
    get_response, 
    
  
    
      render_template(context : Hash | NamedTuple | Nil | Marten::Template::Context)
    render_template, 
    
  
    
      render_to_response(context : Hash | NamedTuple | Nil | Marten::Template::Context)
    render_to_response, 
    
  
    
      template_name : String
    template_name
    
  
    
    
  
    
  Instance methods inherited from class Marten::Handlers::Base
  
  
    
      delete
    delete, 
    
  
    
      dispatch : Marten::HTTP::Response
    dispatch, 
    
  
    
      get
    get, 
    
  
    
      head(status : Int32) : HTTP::Responsehead head, json(raw_json : String, status = 200)
json(serializable, status = 200) json, options options, params : Hash(String, Int16 | Int32 | Int64 | Int8 | String | UInt16 | UInt32 | UInt64 | UInt8 | UUID) params, patch patch, post post, put put, redirect(url : String, permanent = false) redirect, render(template_name : String, context : Hash | NamedTuple | Nil | Marten::Template::Context = nil, content_type = HTTP::Response::DEFAULT_CONTENT_TYPE, status = 200) render, request : Marten::HTTP::Request request, respond(content = "", content_type = HTTP::Response::DEFAULT_CONTENT_TYPE, status = 200) respond, response : Marten::HTTP::Response? response, response! response!, reverse(*args, **options)
reverse(*args, **options, &) reverse, trace trace
Constructor methods inherited from class Marten::Handlers::Base
  
  
    
      new(request : HTTP::Request, params : Hash(String, Routing::Parameter::Types))new(request : HTTP::Request) new
Class methods inherited from class Marten::Handlers::Base
  
  
    
      http_method_nameshttp_method_names(*method_names : String | Symbol) http_method_names
Instance methods inherited from module Marten::Handlers::Session
  
  
    
      session(*args, **options)session(*args, **options, &) session
Instance methods inherited from module Marten::Handlers::RequestForgeryProtection
  
  
    
      get_csrf_token
    get_csrf_token, 
    
  
    
      referer_trusted?
    referer_trusted?
    
  
    
    
  
    
  Instance methods inherited from module Marten::Handlers::Flash
  
  
    
      flash(*args, **options)flash(*args, **options, &) flash
Instance methods inherited from module Marten::Handlers::Cookies
  
  
    
      cookies(*args, **options)cookies(*args, **options, &) cookies
Class Method Detail
Returns the name of the model field that will be used to retrieve the record (defaults to pk).
Allows to configure the name to use to include the model record into the template context.
Returns the name to use to include the model record into the template context (defaults to record).
Instance Method Detail
Returns a hash containing the template context or nil.
The default implementation returns nil.
Returns a hash of initial data, computed from the considered record, to prepare the schema.
Produces the response when the processed schema is valid.
By default, this will return a 302 redirect targetting the configured success URL.
Returns the schema, initialized using the request data.