Sha256: c83b4dbda7b67a985fc12595d7acae3052359e856a3f011655931229214aa480

Contents?: true

Size: 1.24 KB

Versions: 48

Compression:

Stored size: 1.24 KB

Contents

require 'jbuilder/jbuilder_template'

module Incline::Extensions
  ##
  # Adds the +api_errors+ method to be used in jbuilder views to easily list
  # errors for a model in a form that is compatible with the DataTables API.
  module JbuilderTemplate

    ##
    # List out the errors for the model.
    #
    # model_name::   The singular name for the model (e.g. - "user_account")
    # model_errors:: The errors collection from the model.
    #
    #   json.api_errors! "user_account", user.errors
    #
    def api_errors!(model_name, model_errors)
      base_error = model_errors[:base]
      field_errors = model_errors.reject{ |k,_| k == :base }
      unless base_error.blank?
        set! 'error', "#{model_name.humanize} #{base_error.map{|e| h(e.to_s)}.join("<br>\n#{model_name.humanize} ")}"
      end
      unless field_errors.blank?
        set! 'fieldErrors' do
          array! field_errors do |k,v|
            set! 'name',   "#{model_name}.#{k}"
            set! 'status', v.is_a?(::Array) ?
                "#{k.to_s.humanize} #{v.map{|e| h(e.to_s)}.join("<br>\n#{k.to_s.humanize} ")}" :
                "#{k.to_s.humanize} #{h v.to_s}"
          end
        end
      end
    end

  end
end

JbuilderTemplate.include Incline::Extensions::JbuilderTemplate

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
incline-0.3.14 lib/incline/extensions/jbuilder_template.rb
incline-0.3.13 lib/incline/extensions/jbuilder_template.rb
incline-0.3.12 lib/incline/extensions/jbuilder_template.rb
incline-0.3.11 lib/incline/extensions/jbuilder_template.rb
incline-0.3.10 lib/incline/extensions/jbuilder_template.rb
incline-0.3.9 lib/incline/extensions/jbuilder_template.rb
incline-0.3.8 lib/incline/extensions/jbuilder_template.rb
incline-0.3.7 lib/incline/extensions/jbuilder_template.rb
incline-0.3.6 lib/incline/extensions/jbuilder_template.rb
incline-0.3.5 lib/incline/extensions/jbuilder_template.rb
incline-0.3.4 lib/incline/extensions/jbuilder_template.rb
incline-0.3.3 lib/incline/extensions/jbuilder_template.rb
incline-0.3.2 lib/incline/extensions/jbuilder_template.rb
incline-0.3.1 lib/incline/extensions/jbuilder_template.rb
incline-0.3.0 lib/incline/extensions/jbuilder_template.rb
incline-0.2.36 lib/incline/extensions/jbuilder_template.rb
incline-0.2.35 lib/incline/extensions/jbuilder_template.rb
incline-0.2.34 lib/incline/extensions/jbuilder_template.rb
incline-0.2.28 lib/incline/extensions/jbuilder_template.rb
incline-0.2.27 lib/incline/extensions/jbuilder_template.rb