【问题标题】:How to solve this Rails Active Record erorr: undefined method `to_sym' for #<Arel::Attributes::Attribute:...?如何解决此 Rails Activerecord 错误:#<Arel::Attributes::Attribute:... 的未定义方法 `to_sym'?
【发布时间】:2012-11-10 04:41:03
【问题描述】:

我们正在使用 Ruby on Rails(带有 MySQL 数据库的 Active Record)。

我们遇到了这个神秘的错误:

undefined method `to_sym' for #<Arel::Attributes::Attribute:0x007f82e4088248>

我查看了我们的 Ruby 代码并在 IRB 中进行了尝试,它似乎可以与 Rails/ActiveRecord 一起使用。

那么上面的错误信息是什么意思,我们该如何解决呢?

谢谢

【问题讨论】:

  • 你也可以在这里发布堆栈跟踪吗?
  • 在这里,不确定它有多大帮助 app/views/home/_top_collectors.html.erb:2:in block in _app_views_home__top_collectors_html_erb___1114436438966347956_69885225174440' app/views/home/_top_collectors.html.erb:1:in _app_views_home__top_collectors_html_erb___1114436438966347956_69885225174440' app/views/home/index.html.er: 45:在`_app_views_home_index_html_erb__2079745407266393088_69885433760820'
  • 很抱歉,您的 _top_collectors.html.erb 文件中有什么内容?至少是它崩溃的地方的代码?我会打赌用 to_sym 进行一些序列化(可能是 to_json 调用)螺丝...

标签: ruby-on-rails activerecord


【解决方案1】:

to_sym 方法将字符串转换为符号。即:"example".to_sym 变为 :example 在您的代码中的某处,您将一个对象传递给一个需要符号的方法,而 ruby​​ 找不到合适的符号来替换该对象。您将不得不查看堆栈跟踪或其他方式来找到发生这种情况的位置。

【讨论】:

  • 我知道 to_sym 是做什么的。我认为这里的关键是 Arel。有趣的是,我在 Rails 控制台中尝试了那些 ruby​​ 代码并且它们可以工作。所以我不知道他们为什么会在页面上中断。
  • 我不能告诉你,因为我看不到你的代码。从您在上面的评论中发布的堆栈跟踪来看,它看起来像是您的 _top_colectors.html.erb 文件中的内容。
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
相关资源
最近更新 更多