1

我最近从 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 项目,只是突然在这个特定的应用程序上得到这个没有隐式转换错误。

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


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

4

2 回答 2

1

谢谢你们的答案!所以似乎是导致错误的会话有问题..

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

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

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

于 2014-05-06T00:28:44.997 回答
0

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

if current_user
if affiliate

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

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

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

if affiliate.present?
if !affiliate.nil?
于 2014-05-06T00:25:13.793 回答