表单验证不正确

时间:2015-02-16 23:59:12

标签: css ruby-on-rails ruby flash input

我遇到了一个奇怪的问题。这是关于闪存的控制器代码:

def create
    user = User.find_by(email: params[:email])
    if user && user.authenticate(params[:password])
        session[:user_id] = user.id
        redirect_to root_path, notice: "Signed in!"
    else
        flash.now[:error] = 'Your email or password is incorrect!'
        render "new"
    end
end

以下是关联的视图代码:

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

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

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

    <% else %>

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

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

    <% end %>

错误类应导致输入字段变为红色。但是,它们目前暂时闪烁红色,然后呈现页面。我能在这里做得更好吗?

由于

1 个答案:

答案 0 :(得分:2)

来自文档:

  

当你需要将一个对象传递给当前动作时,你现在就使用了,当你的当前动作完成后你的对象就会消失。

     

现在设置的条目的访问方式与标准条目相同:flash [&#39; my-key&#39;]。

(见http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-now

尝试删除&#39;。现在&#39;在你的视图中,而不是

<% if flash[:error] %>