我已经设计并在用户名中添加了注册过程。我还在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
任何想法都会非常感谢
设计相关更改的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
好的,所以我去看了注册控制器中的更新操作的代码,发现我可以添加代码来设置闪存无法更新后。
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
这是代码,其他任何人都有这个问题。