设计注册错误

时间:2011-12-28 04:25:49

标签: ruby-on-rails devise

我在Rails webapp的主页上有我的注册表单,我想知道如何在该页面而不是/users/sign_up页面上显示注册错误。我尝试将devise_error_message!块移动到我的主页,但是在注册失败后用户被重定向到主页时没有显示任何内容。

由于devise_error_messages会在/users/sign_up页面上呈现错误 - 为什么我在主页上调用时不会显示错误?

1 个答案:

答案 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