使用设计时未显示更新错误的Flash消息

问题描述 投票:0回答:2

我已经设计并在用户名中添加了注册过程。我还在mdoel内添加了用户名存在和长度的验证。

注册时,如果我没有在验证中输入用户名并且出现flash消息但在编辑用户上如果我没有输入用户名,则验证将启动,但不会出现闪存。我在'layout/application'有闪光所以它出现在每一页上。

这是我有一个帮助方法:

    module DeviseHelper
      def devise_error_messages!
        if resource.errors.full_messages.any?
          flash.now[:danger] = resource.errors.full_messages.to_sentence
        end
        return ''
      end
    end

任何想法都会非常感谢

ruby-on-rails
2个回答
1
投票

设计相关更改的Devise错误辅助方法覆盖请参阅设计错误辅助方法

module DeviseHelper
  def 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 id="error_explanation">
      <h2>#{sentence}</h2>
      <ul>#{messages}</ul>
    </div>
    HTML

    html.html_safe
  end

   def devise_error_messages?
     !resource.errors.empty?
   end
end

0
投票

好的,所以我去看了注册控制器中的更新操作的代码,发现我可以添加代码来设置闪存无法更新后。

def update
      self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
      prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
      resource_updated = update_resource(resource, account_update_params)
      yield resource if block_given?
      if resource_updated
        if is_flashing_format?
          flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
            :update_needs_confirmation : :updated
          set_flash_message :notice, flash_key
        end
        bypass_sign_in resource, scope: resource_name
        respond_with resource, location: after_update_path_for(resource)
      else
        flash.now[:danger] = resource.errors.full_messages.to_sentence <<<< RIGHT HERE
        clean_up_passwords resource
        set_minimum_password_length
        respond_with resource
      end
    end

这是代码,其他任何人都有这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.