ruby-on-rails - 设计注册错误

标签 ruby-on-rails devise

我的 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/

相关文章:

ruby-on-rails - 计算数据库用户数据的大量统计信息 : optimizing performance

ruby-on-rails - 如何显示用户喜欢的所有我的帖子

ruby-on-rails - 如何使用 Amazon SES 设置 Ruby on Rails Action 邮箱?

ruby-on-rails - 如何调用完全限定的 Devise sign_in 方法?

ruby-on-rails - 基于 Ajax 的 Web 应用程序和身份验证 : session or token?

ruby-on-rails - 使用带有 RSpec 的设计测试 View

ruby-on-rails - 当我在同一页面中输入登录和注册表单时如何显示设计错误消息

ruby-on-rails - Devise + Omniauth [警告: Can't verify CSRF token authenticity]

ruby-on-rails - Rails-通过事件资源使用API​​时,URL中具有多个值的参数

ruby-on-rails - 在网站上组织自动付款的最佳方式是什么?