рельсы JQuery проверки формы AJAX - PullRequest
0 голосов
/ 04 мая 2009

Я собираюсь сделать некоторую проверку формы ajax с помощью jquery. Все на месте, и я могу вернуть свои ошибки в объекте json, который выглядит примерно так:

errors => {
"first_name": "cannot be blank",
"password": "cannot be blank",
"last_name": "cannot be blank",
"email": "cannot be blank"}

Это прекрасно работает, если я просто хочу отображать сообщения об ошибках в верхней части. Однако я также хотел бы сделать что-то похожее на встроенную проверку рельсов, где это окружает и поля ошибок с div 'fieldWithErrors'. (на самом деле я просто хочу добавить класс 'fieldWithErrors' к вводу ошибок)

Я не уверен точно, где находится магия рельсов, которая находит соответствующие поля ошибок и добавляет div ошибок, но я ищу этот код, чтобы я мог вернуть объект json с сообщением об ошибке, и фактический идентификатор поля ошибки, чтобы я мог обновить его с соответствующим классом. Конечно, я могу просто добавить имя объекта (в данном случае пользователя) к «полю», которое возвращается в объекте json (т.е. «first_name»), однако я хочу, чтобы это была универсальная функция, которая работает для любой формы, которую я есть.

Может кто-нибудь указать мне место, где генерируется фактический идентификатор поля ошибки. Я хотел бы иметь возможность делать что-то вроде @ object.errors [: first_name] .field_id, чтобы я мог вернуть объект json, похожий на описанный выше, за исключением того, что мой ключ 'first_name' на самом деле 'user_first_name', идентификатор поле ошибки.

1 Ответ

1 голос
/ 04 мая 2009

посмотрите в actionpack / lib / action_view / helpers / form_helper.rb, чтобы увидеть, как это делает Rails

Вот методы в form_helper.rb, которые определяют идентификатор тега

    def tag_id
      "#{sanitized_object_name}_#{sanitized_method_name}"
    end

    def sanitized_object_name
      @sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
    end

    def sanitized_method_name
      @sanitized_method_name ||= @method_name.sub(/\?$/,"")
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...