         .replace(/(.),(.)/, '$1; $2')
 
     # Check for alternate copy mapping
-    if _.has(en.errors, message)
+    if _s.has(en.errors, message)
       en.errors[message]
     else
       # Always return a string

      parsed = text: 'There was an error'

    # Pull out the appropriate string
    message = if _.has(parsed, 'text')
      parsed.text
    else if _.has(parsed, 'error')
      parsed.error.message or parsed.error
    else if _.has(parsed, 'details') and _.isArray(parsed.details)
      parsed.details.join('; ')
    else if _.has(parsed, 'detail')
      _.map(parsed.detail, (v, k) =>
        # For param_errors we can point out the problematic fields
        # provided they have name attributes
        @$("[name=#{k}]").attr 'data-state', 'error'

        "#{_.humanize(k)} #{v}"
      )
        .join('; ')
        # Multiple errors on a single param are

    , {}

    form = _.reduce $form.serializeArray(), (memo, input) ->
      memo[input.name] = _s.trim input.value
      memo
    , {}

