Class: Clot::ErrorMessagesFor

Inherits:
Liquid::Tag
  • Object
show all
Includes:
TagHelper
Defined in:
lib/clot/form_for.rb

Instance Method Summary collapse

Methods included from TagHelper

#resolve_value, #split_params

Constructor Details

#initialize(name, params, tokens) ⇒ ErrorMessagesFor

Returns a new instance of ErrorMessagesFor.



188
189
190
191
# File 'lib/clot/form_for.rb', line 188

def initialize(name, params, tokens)
  @_params = split_params(params)
  super
end

Instance Method Details

#error_message(attr, msg) ⇒ Object



224
225
226
227
228
229
230
# File 'lib/clot/form_for.rb', line 224

def error_message(attr, msg)
  unless attr == :base
    "#{attr} - #{msg}"
  else
    msg
  end
end

#render(context) ⇒ Object



194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/clot/form_for.rb', line 194

def render(context)
  @params = @_params.clone
  @model = context[@params.shift]

  result = ""
  if @model and @model.respond_to?(:errors) and @model.errors.count > 0
    @suffix = @model.errors.count > 1 ? "s" : ""
    @default_message = @model.errors.count.to_s + " error#{@suffix} occurred while processing information"

    @params.each do |pair|
      pair = pair.split /:/
      value = resolve_value(pair[1], context)

      case pair[0]
        when "header_message" then
          @default_message = value
      end
    end

    result += '<div class="errorExplanation" id="errorExplanation"><h2>' + @default_message + '</h2><ul>'

    @model.errors.each do |attr, msg|
      result += "<li>#{error_message(attr, msg)}</li>"
    end if @model.respond_to? :errors

    result += "</ul></div>"
  end
  result
end