fieldWithErrors не оборачивает каждое поле ошибки - PullRequest
1 голос
/ 05 июня 2010

Обратите внимание на следующий результат, когда я отправляю пустое поле: title и: description

Теги div div обертывают только текстовое поле заголовка, а не текстовое поле описания. http://www.freeimagehosting.net/uploads/c14b4a2d74.png

Проверки в контроллере:

class Question < ActiveRecord::Base
  validates_presence_of :title
  validates_presence_of :description

И, форма генерируется с такими именами:

-form_for(@question) do |f|
  = f.error_messages
  = f.label :title
  = f.text_field :title, :size => 50, :onchange => remote_function(:url => {:action => :display_tag_suggestions}, :with => 'Form.Element.serialize(this)')
  #suggestions
  = f.label :description
  = f.text_area :description
  ...

Но, по какой-то причине, только: заголовок помещается в теги div ошибки:

<form action="/questions" class="new_question" id="new_question" method="post">
  <div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="6HQaiu1D0gBQcKw2pLeZP6Jvn0FSClPD5Sk9HwegzPg=" /></div>
  <div class="errorExplanation" id="errorExplanation">
    <h2>2 errors prohibited this question from being saved</h2>
    <p>There were problems with the following fields:</p>
    <ul>
      <li>Title can't be blank</li>
      <li>Description can't be blank</li>
    </ul>
  </div>
  <label for="question_title">Title</label>
  <div class="fieldWithErrors"><input id="question_title" name="question[title]" onchange="new Ajax.Request('/questions/display_tag_suggestions', {asynchronous:true, evalScripts:true, parameters:Form.Element.serialize(this) + '&amp;authenticity_token=' + encodeURIComponent('6HQaiu1D0gBQcKw2pLeZP6Jvn0FSClPD5Sk9HwegzPg=')})" size="50" type="text" value="" /></div>
  <label for="question_description">Description</label>
  <textarea cols="40" id="question_description" name="question[description]" rows="20"></textarea>
  ...

Я не думаю, что такое поведение ожидается. Проблема, с которой сталкивается большинство людей, заключается в том, что он упаковывает вещи в div, которые не будут отображаться должным образом. Моя проблема в том, что для начала поля не заключаются в div!

Я не внес никаких (сознательных) изменений в способ обработки ошибок, поэтому не уверен, почему он не работает должным образом.

1 Ответ

1 голос
/ 05 июня 2010

Какую версию Haml вы используете? Некоторые старые версии имели проблемы совместимости с переносом ошибок.

...