【问题标题】:Passing a model method's output to its controller将模型方法的输出传递给它的控制器
【发布时间】:2013-05-17 00:39:23
【问题描述】:

我已经在我的 Track 模型中定义了这个方法

def random_number
    max = Article.maximum(:id)
    id = rand(1..max)
    return id
end

并尝试将其传递给 Tracks 控制器,以在轨道控制器的索引视图中呈现另一个类对象,如下所示:

def index
  @tracks = Track.all
  id = Track.random_number
  @random = Article.find_by_id(id)
end

但不断收到 NoMethodError “未定义的方法 `random_number' for #”。

关于如何正确渲染的任何提示?

谢谢!!

【问题讨论】:

  • random_number 可以重构为一行:rand 1..Article.maximum(:id)

标签: ruby-on-rails model-view-controller


【解决方案1】:

您将其称为类方法。将self 添加到方法中,您就可以开始了。

def self.random_number

现在的方式,您只能使用 Track 类的实例来访问该方法。

@track = Track.new
@track.random_number

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多