我的 Rails webapp 主页上有我的注册表单,我想知道如何让注册错误显示在该页面上而不是 /users/sign_up
页。我尝试将 devise_error_message!
block 移动到我的主页,但是当用户在注册失败后被重定向到主页时,没有任何显示。
既然 devise_error_messages
在 /users/sign_up
页面上呈现错误——为什么当我在那里调用它们时它们没有显示在主页上?
最佳答案
可能是设计辅助方法所需的“资源”属性无法解析为任何值。此外,您不应该重定向用户,而只是呈现带有错误的主页。我不确定渲染时模型是如何传输的。
你可以在你的主页帮助类中有一个 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
。
关于ruby-on-rails - 设计注册错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8651845/