ruby-on-rails – 设计 – 如果数据库中不存在该电子邮件,则忘记密码不显示错误消息

ruby-on-rails – 设计 – 如果数据库中不存在该电子邮件,则忘记密码不显示错误消息,第1张

概述当用户点击忘记密码时,会将他们带到忘记密码页面,并带有一个字段供他们输入他们的电子邮件地址.如果他们的电子邮件地址在数据库中,一切都很好,但如果数据库中不存在电子邮件地址,它只会重定向到同一页面,但不会显示错误消息. 如何显示错误消息? /view/devise/passwords/new.html.erb ...<%= form_for(resource, :as => resource_na 当用户点击忘记密码时,会将他们带到忘记密码页面,并带有一个字段供他们输入他们的电子邮件地址.如果他们的电子邮件地址在数据库中,一切都很好,但如果数据库中不存在电子邮件地址,它只会重定向到同一页面,但不会显示错误消息.

如何显示错误消息?

/vIEw/devise/passwords/new.HTML.erb

...<%= form_for(resource,:as => resource_name,:url => password_path(resource_name),:HTML => { :method => :post }) do |f| %>    <h1>reset Password</h1>         <div >        <p>Instructions on resetting your password will be emailed to you.</p>        <%= render :partial => '/shared/messages' %>        <div >            <%= f.label :email %>            <%= f.email_fIEld :email,:placeholder => 'Email',:class => 'login username-fIEld' %>        </div> <!-- /fIEld -->    </div> <!-- /login-fIElds -->    <div >        <%= content_tag(:button,:type=>:submit,:class => "button btn btn-secondary btn-large") do %>            Send me reset password instructions        <% end %>    </div> <!-- .actions -->    <div >        <%= render "devise/shared/links" %>    </div><% end %>...

/vIEws/shared/_messages.HTML.erb

<% if alert || flash[:alert] || flash[:error] %>    <div >        <a  data-dismiss="alert" href="#">x</a>        <h4 >Error!</h4>        <%= alert %>        <%= flash[:error] %>    </div><% end %><% if flash[:success] || notice || flash[:notice]%>    <div >        <a  data-dismiss="alert" href="#">x</a>        <h4 >Success!</h4>        <%= flash[:success] %>        <%= notice %>    </div><% end %>
解决方法 在您的共享消息部分中,您只显示来自控制器的错误.您需要包含附加到模型的错误.在这种情况下,错误消息将附加到用户模型.你/vIEws/shared/_messages.HTML.erb应该看起来像:

<% if alert || flash[:alert] || flash[:error] %>    <div >      <a  data-dismiss="alert" href="#">x</a>      <h4 >Error!</h4>      <%= alert %>      <%= flash[:error] %>    </div><% end %><% if model.errors.any? %>    <div >      <a  data-dismiss="alert" href="#">x</a>      <h4 >Error!</h4>      <ul>        <% model.errors.full_messages.each do |msg| %>            <li>* <%= msg %></li>        <% end %>      </ul>    </div><% end %><% if flash[:success] || notice || flash[:notice]%>    <div >      <a  data-dismiss="alert" href="#">x</a>      <h4 >Success!</h4>      <%= flash[:success] %>      <%= notice %>    </div><% end %>

在渲染局部时,您需要传入模型.

<%= render '/shared/messages',model: resource %>
总结

以上是内存溢出为你收集整理的ruby-on-rails – 设计 – 如果数据库中不存在该电子邮件,则忘记密码不显示错误消息全部内容,希望文章能够帮你解决ruby-on-rails – 设计 – 如果数据库中不存在该电子邮件,则忘记密码不显示错误消息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1232652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存