【问题标题】:TypeError in Devise::RegistrationsController#create设计中的类型错误::RegistrationsController#create
【发布时间】:2017-02-25 04:49:37
【问题描述】:

对于使用 Rails 4.2 进行设计,当我关闭用户模型中所需的确认时,我能够注册用户,但当我重新打开它时,我收到此错误。

没有将数组隐式转换为字符串

# i.e. OpenSSL::Digest::SHA1#block_length
        def generate_key(salt, key_size=64)
          OpenSSL::PKCS5.pbkdf2_hmac_sha1(@secret, salt, @iterations, key_size)
        end
      end

参考这一行

devise (3.5.10) lib/devise/token_generator.rb:50:in `pbkdf2_hmac_sha1'

我正在使用 mailtrap 进行开发设置,并且可以在我的联系页面中获取邮件。

在我的 user.rb 我有
设计:database_authenticable,:可注册, :recoverable, :rememberable, :trackable, :validatable, :confirmable

我的设计初始化程序设置与另一个有效的项目完全相同。

在我的应用控制器中,我已经设置了参数

before_action :configure_permitted_pa​​rameters, if: :devise_controller? def configure_permitted_pa​​rameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:firstname, :lastname, :email, :avatar, :password, :password_confirmation) } 结束

我的视图/设计包含文件夹(确认、邮件、密码、注册、会话、共享和解锁。

我的新设计注册如下:

<div class="row">

<%= bootstrap_devise_error_messages! %>
<div class="panel panel-default devise-bs">
  <div class="panel-heading">
    <h4><%= t('.sign_up', :default => "Sign up") %></h4>
  </div>
  <div class="panel-body">
    <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), html: { role: "form" }) do |f| %>
      <div class="form-group">
        <%= f.label :firstname %>
        <%= f.text_field :firstname, autofocus: true, class: "form-control" %>
      </div>
      <div class="form-group">
        <%= f.label :lastname %>
        <%= f.text_field :lastname, autofocus: true, class: "form-control" %>
      </div>
      <div class="form-group">
        <%= f.label :email %>
        <%= f.email_field :email, autofocus: true, class: "form-control" %>
      </div>
      <div class="form-group">
        <%= f.label :avatar %><br>
        <%= f.file_field :avatar, autofocus: true, class: "form-control" %>
      </div>
      <div class="form-group">
        <%= f.label :password %>
        <% if @minimum_password_length %>
        <em>(<%= @minimum_password_length %> characters minimum)</em>
        <% end %><br />
        <%= f.password_field :password, autocomplete: "off", class: "form-control" %>
      </div>
      <div class="form-group">
        <%= f.label :password_confirmation %>
        <%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control" %>
      </div>
      <%= f.submit t('.sign_up', :default => "Sign up"), class: "btn btn-primary" %>
    <% end %>
  </div>
  <div class="panel-footer">
    <%= render "devise/shared/links" %>
  </div>
</div>

关于我可能做错的任何提示,我已经旋转了几天。 谢谢:)

【问题讨论】:

  • Devise 3.5 已经很老了,当前版本是 4.2
  • 如果升级 Devise 不能解决您的问题,请查看 config/secrets.yml 并查看 secret_key_base 是否真的是一个字符串,例如一个完整的字母数字字符串。键中的任何空格都可能导致 Devise 将其解释为两个或多个字符串的数组。
  • 谢谢,我明天试试,告诉你。
  • 我删除了版本,并进行了捆绑更新。它正在工作。非常感谢:)

标签: ruby-on-rails devise ruby-on-rails-4.2 devise-confirmable


【解决方案1】:

检查你的 user.rb 中的 to_json/as_json 是否正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2012-09-24
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多