我有自定义重定向到我的设计注册表单,我有两个表单,一个用于个人,另一个用于公司。我在注册控制器的创建操作中添加了这个:
if resource.company_form
redirect_to new_user_registration_path(company: true)
else
redirect_to new_user_registration_path
end
在执行此操作时虽然我丢失了所有设计错误消息,因为在不显示任何验证错误,所以我需要发送错误消息以及重定向,不是吗?但是,我不确定如何。
到目前为止,我已尝试将错误消息打印到控制台:
ap(resource.errors.full_messages)
[
[0] "Email can't be blank",
[1] "Password can't be blank",
[2] "Company name can't be blank"
]
鉴于此:
ap(resource.errors)
@messages={:email=>["can't be blank"], :password=>["can't be blank"], :company_name=>["can't be blank"]}
如何将错误消息再次显示在表单上方?
答案 0 :(得分:1)
设计错误消息的神奇之处在于使用了respond_with方法。
因此,您可以更改response_with块的redirect_to
respond_with(resource) do |format|
if resource.company_form
format.html { render 'new', locals: { is_organisation: true } }
else
format.html { render 'new' }
end
end
并在您的视图中
<% params[:organisation] ||= is_organisation -%>
答案 1 :(得分:0)
不确定是否有帮助,但是您可以根据消息进一步自定义。首先要确保实际工作是一个好主意。然后进一步对其进行自定义。
gem 'toastr-rails', '~> 1.0'
在您的application.js中,您需要添加//= require toastr
在您的stylesheet.scss中,您将需要导入toastr @import "toastr";
然后在您的终端上运行bundle
在views / devise / registrations /文件夹和views/devise/password/
文件夹中,其中的页面是显示错误消息的devise视图。您将在此处找到通过设计产生的错误消息。 <%= devise_error_messages! %>
因此,您想要做的就是自定义这些消息。
现在转到视图/共享并创建一个新文件,并将其命名为_devisemes.html.erb
<% unless resource.errors.empty? %>
<script type="text/javascript">
<% resource.errors.full_messages.each do |value| %>
toastr.error('<%= value %>')
<% end %>
</script>
<% end %>
保存此文件之后。只需转到以下文件并找到
<%= devise_error_messages! %>
在以下以下文件中用 <%= render 'shared/devisemes' %>
替换它:
views/devise/registrations/edit.html.erb
views/devise/registrations/new.html.erb
views/devise/password/new.html.erb
views/devise/password/edit.html.erb
现在注销并创建一个没有电子邮件或密码的帐户并进行测试。您会注意到来自设计的所有错误消息都与toastr一起出现。