从视图中调用模型中的方法

ben*_*_an 6 methods model-view-controller model ruby-on-rails ruby-on-rails-3

我试图评估哪个指标需要显示在项目旁边,如果它之前是否被查看过,新评论等等.在我决定使用的符号之前,我只想要一个数字来显示.

在我的报告模型中我有

def self.indicator
    #bunch of if elsif statements returning a number 0-3
end
Run Code Online (Sandbox Code Playgroud)

在我看来,我有

<% @reports.each do |report| %>
    <%= report.indicator %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我明白了 undefined method 'indicator'

我以为我掌握了方法的运作方式......但显然不是,我做错了什么?

Mic*_*ant 6

尝试

def indicator
    #bunch of if elsif statements returning a number 0-3
end
Run Code Online (Sandbox Code Playgroud)

你不需要自我,因为[纠正]是一个班级方法.

  • 你能说出在视图中调用模型方法是否可行,因为我们正在以这种方式跳过控制器?此外,如果这是一个不好的做法,还有什么选择? (3认同)

Mar*_*oda 6

在您的视图中,您indicator在每个报表对象上调用实例方法

report.indicator
Run Code Online (Sandbox Code Playgroud)

但是在您的模型中,您已经定义了一个类方法.因此,为了使其工作,将指标方法定义为实例方法:

def indicator
  #bunch of if elsif statements returning a number 0-3
end
Run Code Online (Sandbox Code Playgroud)