我遇到了一个奇怪的问题。这是关于闪存的控制器代码:
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 %>
错误类应导致输入字段变为红色。但是,它们目前暂时闪烁红色,然后呈现页面。我能在这里做得更好吗?
由于
答案 0 :(得分:2)
来自文档:
当你需要将一个对象传递给当前动作时,你现在就使用了,当你的当前动作完成后你的对象就会消失。
现在设置的条目的访问方式与标准条目相同:flash [&#39; my-key&#39;]。
(见http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-now)
尝试删除&#39;。现在&#39;在你的视图中,而不是
<% if flash[:error] %>