Rails 4设计缺少插值参数:authentication_keys in" Invalid%{authentication_keys}或password。" ({:resource_name =>:user}给出)

时间:2016-04-28 04:24:03

标签: ruby-on-rails-4 devise

我为我的user模型配置了Devise。在过去的几天里devise对我来说非常好。它现在也正在用于正确的电子邮件和密码。但问题是,当我输入错误的电子邮件或密码,而不是重定向到登录页面时,我得到错误:

  

I18n ::缺少/ users / sign_in时的MissingInterpolationArgument   插值参数:"中的authentication_keys无效   %{authentication_keys}或密码。" ({:resource_name =>:user}给出)

我在devise.rb文件中检查了config.authentication_keys = [ :email ]行。我真的不知道如何解决此错误并重定向到devise登录页面。

1 个答案:

答案 0 :(得分:0)

我使用了此帮助程序,也遇到了该错误(使用Rails 5.2.1,设计了4.5.0)

app / helpers / devise_helper.rb

  def devise_error_messages!
    flash_alerts = []
    error_key = 'errors.messages.not_saved'

    if !flash.empty?
      flash_alerts.push(flash[:error]) if flash[:error]
      flash_alerts.push(flash[:alert]) if flash[:alert]
      flash_alerts.push(flash[:notice]) if flash[:notice]
      error_key = 'devise.failure.invalid'
    end

    return "" if resource.errors.empty? && flash_alerts.empty?
    errors = resource.errors.empty? ? flash_alerts : resource.errors.full_messages

    messages = errors.map { |msg| content_tag(:li, msg) }.join
    sentence = I18n.t(error_key, :count    => 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

我会在处理翻译I18n.t的那一行上进行浏览,或者完全跳过帮助程序作为解决方法