我在Rails webapp的主页上有我的注册表单,我想知道如何在该页面而不是/users/sign_up
页面上显示注册错误。我尝试将devise_error_message!
块移动到我的主页,但是在注册失败后用户被重定向到主页时没有显示任何内容。
由于devise_error_messages
会在/users/sign_up
页面上呈现错误 - 为什么我在主页上调用时不会显示错误?
答案 0 :(得分:0)
可能是设计辅助方法所期望的“资源”属性无法解析为任何值。此外,您不应重定向用户,只是渲染主页有错误。我不确定渲染时模型是如何传递的。
您可以在主页帮助程序类中拥有custom_devise_error_messages:
def custom_devise_error_messages!
return "" if resource.errors.empty?
messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t("errors.messages.not_saved",
:count => resource.errors.count,
:resource => resource.class.model_name.human.downcase)
html = <<-HTML
<div class="alert alert-error">
<a class="close" data-dismiss="alert">x</a>
<ul style="padding:0; margin: 0; padding-left: 8px;">#{messages}</ul>
</div>
HTML
html.html_safe
end
另外,从您的注册操作方法,而不是redirect_to :path_or_url
使用render :action_name
。