2011-12-28 52 views
3

我有我的Rails Web应用程序的主页上我的注册表格,我想知道我怎么会在注册的错误出现在该网页上,而不是/users/sign_up页面上。我尝试将devise_error_message!块移到我的主页,但是当用户在注册失败后重定向到主页时,什么也没有显示。设计注册行动错误

由于devise_error_messages/users/sign_up页面上显示错误 - 为什么当我打电话时,它们不会显示在主页上?

回答

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