当我提交空白的 :title 和 :description 字段时请注意以下结果
验证在 Controller 中:
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
...
但是,出于某种原因,只有 :title 被包裹在错误的 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) + '&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 包裹!
我没有对错误的处理方式进行任何(有意识的)更改,所以我不确定为什么它不能正常工作。
最佳答案
您使用的是什么版本的 Haml?一些旧版本在错误包装方面存在兼容性问题。
关于ruby-on-rails - fieldWithErrors 没有包装每个错误字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978987/