带有 flash 的奇怪文本字段行为

Strange text field behaviour with flash

这是我的代码:

    <% if flash.now[:error] %>
        <div id='login-error'>
            <p id='error-text'><%= flash.now[:error] %></p>
        </div>
    <% end %>

    <% if flash.now[:error] %>

    <%= label_tag :email %>
    <%= text_field_tag :email, class: "error"%>

    <%= label_tag :password %>
    <%= password_field_tag :password, class: "error" %>

    <% else %>

    <%= label_tag :email %>
    <%= text_field_tag :email%>

    <%= label_tag :password %>
    <%= password_field_tag :password%>

    <% end %>

如果会话存在验证错误,则在呈现带有 Flash 的新页面时,实际的 class 名称 'error' 会出现在文本字段中。 class 未应用,但实际的 class 名称出现在文本和密码字段中。知道为什么会这样吗?

具体来说,这是电子邮件字段中显示的内容:{:class=>"error"}

看看这是否更好(注意 nil 参数):

<%= label_tag :email %>
<%= text_field_tag :email, nil, class: "error" %>

<%= label_tag :password %>
<%= password_field_tag :password, nil, class: "error" %>

对于这些特定的表单助手,选项散列必须是第三个参数。第二个参数实际上设置输入字段的值。