Ruby on Rails:没有将Array隐式转换为String(DEVISE)

我最近从10.7升级到OSX Mavericks 10.9,从那时起它给我带来了很多麻烦。 我升级了Xcode,命令行工具,重新安装了自制软件和rvm,最后让rails工作(我花了5个小时让rmagick再次工作)。

但是,现在当我尝试从我的localhost访问我的应用程序时,我收到此错误

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) 

这是app_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 , Michal Papis  [https://rvm.io/] 
  • 在我的小牛升级之前,我们在轨道3.2.16和ruby 2.1.0上。 我刚刚将homebrew,rvm和rails / ruby​​重新安装到同一版本。

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

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

当其他开发人员没有得到它时,是否有任何特殊原因导致我在本地计算机上出现此错误? (我认为这是导致问题的本地设置,而不是代码)


编辑:这结果是会话的设计问题。 我能够通过Devise从1.1.5升级到1.4.5来解决它导致错误的参数数量错误

谢谢你们的答案! 因此,似乎导致错误的会话存在问题。

我能够通过跟随Devise从1.1.5升级到1.4.5来解决这个问题导致错误的参数数量错误

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

哇我花了14个小时试图解决这个问题,事实certificate有这样一个简单的解决方案..

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

 if current_user if affiliate 

如果在数组上调用将给您这个错误。

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

对于联盟会员,find_by_token返回一个数组,也许可以尝试以下方法之一:

 if affiliate.present? if !affiliate.nil?