【问题标题】:Model relationships problem in Rails 3 when deploying to Heroku部署到 Heroku 时 Rails 3 中的模型关系问题
【发布时间】:2011-03-29 06:05:08
【问题描述】:

我在 Rails 3 应用程序上遇到了关系问题。在我的一个模型的索引视图中,我正在显示来自另一个模型的字段,并且它在本地运行良好,但是当我将它推送到 Heroku 时,我得到了可怕的“我们很抱歉,但出现问题时会出现问题”。信息。当我检查 heroku 日志时,错误是“ActionView::Template::Error (undefined method `marca' for nil:NilClass):”

这是马卡模型:

class Marca < ActiveRecord::Base
  has_many :modelos
  has_many :vehiculos

end

这是 Modelo 模型:

class Modelo < ActiveRecord::Base
  belongs_to :marca
  has_many :vehiculos
end

我正在尝试在 Modelo 索引视图中调用 f.marca.nombre,以显示“marca”表中的“nombre”字段。我在 Modelo 表中有一个 marca_id 字段。奇怪的是它在本地工作,如果我改变模型中关系线的顺序,有时它可以在 heroku 上工作。然后在向 heroku 推送几次之后,它又停止了工作。

我尝试在 heroku 控制台上运行“Modelo.reset_column_information”。

有什么建议吗?我应该做些什么来加载模型中的更改吗? 谢谢!

【问题讨论】:

  • 我在周末添加了几列,并进行了几次迁移。我在发布之前尝试运行'heroku rake db:migrate',它仍然是一样的。为什么要问?
  • 您可能忘记了进行迁移,这将使您的某些方法为零。但现在看来不是这样
  • f.marca 中的 f 是什么?这是一个被称为 nil,而不是 marca
  • 如果是索引视图导致了问题,您能否发布控制器中的索引操作和索引视图中处理 f 变量的部分?
  • 显示与报告错误的行号相关的代码

标签: ruby-on-rails activerecord relationship


【解决方案1】:

在视图中您正在执行此操作f.marca.nombre。 'nombre' 是 Marca 的一个字段。你必须在你的modelos_controller 的新动作中这样做。

def new
  marca = Marca.find(params[:id])
  @madelo = Madelo.new(:marca => marca)
end

检查 marca 是否为 nil 以及是否设置了 marca.nombre?这就是引发错误的原因。

【讨论】:

  • 我不必在新动作中声明任何内容,但我检查了 marca 是否为零,并且在某些情况下 Modelo 没有 Marca,所以我必须这样做这个:如果modelo.marca == nil;模型.marca_id;别的;模型.marca.marca;结尾。你检查 nil 的建议救了我。谢谢!
猜你喜欢
  • 2020-01-06
  • 2012-09-14
  • 2023-04-10
  • 2021-02-28
  • 2021-04-09
  • 2012-11-06
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多