【问题标题】:Ruby on Rails: no implicit conversion of Array into String (DEVISE)Ruby on Rails:没有将数组隐式转换为字符串(设计)
【发布时间】:2014-06-21 13:18:56
【问题描述】:

我最近从 10.7 升级到 OSX Mavericks 10.9,从那以后它给我带来了很多麻烦。我升级了 Xcode、命令行工具,重新安装了 homebrew 和 rvm,终于让 rails s 开始工作了(我花了 5 个小时让 rmagick 重新开始工作)。

但是,现在当我尝试从本地主机访问我的应用程序时,我收到了这个错误

no implicit conversion of Array into String

这是rails日志:

Started GET "/" for 127.0.0.1 at 2014-05-05 02:20:00 -0700
Processing by AccountsController#dashboard as HTML
Completed 500 Internal Server Error in 0.3ms

TypeError (no implicit conversion of Array into String):
  app/controllers/application_controller.rb:26:in `check_correct_subdomain'


  Rendered /Users/kibaek/.rvm/gems/ruby-2.1.0@onvard/gems/actionpack-3.2.16/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
  Rendered /Users/kibaek/.rvm/gems/ruby-2.1.0@onvard/gems/actionpack-3.2.16/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
  Rendered /Users/kibaek/.rvm/gems/ruby-2.1.0@onvard/gems/actionpack-3.2.16/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.1ms)

这是调用错误的 application_controller.rb:

  def check_correct_subdomain
    if current_user
      redirect_to root_url(subdomain: current_user.account.domain) if request.subdomain != current_user.account.domain
    end
  end

这是我的版本:

Kibaeks-MacBook-Pro:onvard_saas kibaek$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
Kibaeks-MacBook-Pro:onvard_saas kibaek$ rails -v 
Rails 3.2.16
Kibaeks-MacBook-Pro:onvard_saas kibaek$ bundle -v
Bundler version 1.5.1
Kibaeks-MacBook-Pro:onvard_saas kibaek$ rvm -v
rvm 1.25.25 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
  • 在我的 Mavericks 升级之前,我们也在使用 rails 3.2.16 和 ruby​​ 2.1.0。我刚刚将自制软件、rvm 和 rails/ruby 重新安装到相同的版本。

我将它推送到登台服务器,而我的其他开发人员说它正在他的机器上本地运行,所以我认为这可能是我在升级到 Mavericks 或复制+粘贴一堆东西的过程中所做的事情正在尝试修复 imagemagick/rmagick 错误..

*我能够访问我的其他 Rails 项目,只是突然在这个特定的应用程序上得到这个没有隐式转换错误。

当其他开发人员没有得到它时,我会在我的本地机器上得到这个错误,有什么特别的原因吗? (我认为是我的本地设置导致了问题,而不是代码)


编辑:事实证明这是会话的设计问题。我能够通过Devise upgrade from 1.1.5 to 1.4.5 causes Wrong Number of Arguments error 解决它

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 devise osx-mavericks ruby-2.1


【解决方案1】:

谢谢大家的回答!所以看起来这是导致错误的会话的问题..

我可以通过关注Devise upgrade from 1.1.5 to 1.4.5 causes Wrong Number of Arguments error 来解决这个问题

我运行rake tmp:clear 并更改了 session_store.rb 文件中的密钥名称。

哇,我花了 14 个小时试图解决这个问题,结果发现有这么简单的解决方案..

【讨论】:

    【解决方案2】:

    您的代码中的以下两个似乎都在评估数组:

    if current_user
    if affiliate
    

    在数组上调用 if 会给你这个错误。

    我不确定为什么要将 current_user 作为一个数组,除非你在代码中的其他地方设置它,检查你有 current_user 的任何地方 =

    对于附属公司,find_by_token 正在返回一个数组,或许可以尝试以下方法之一:

    if affiliate.present?
    if !affiliate.nil?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多