在rails中使用service.rb-不会出现方法错误

时间:2018-09-24 03:27:45

标签: ruby-on-rails

我正在尝试在Rails中使用服务来减小控制器的大小。 我有一个事件模型,其中包含user_id字段。我想选择组织最多活动的前3名用户。这是第一次使用Services,有人告诉我强烈建议保持模型和控制器一样的瘦。

我的billboard_service.rb:

class BillboardService


  attr_reader :user, :params, :event



  def most_event_organized
    Event.group(:user_id).order('count_all desc').count.first(3)
  end


  def event_find(user_id)
    Event.where(user_id: user_id).includes(:user_id)
  end

end

我的观点(非常早期)

<%= @bill_board.most_event_organized %>

我的控制器是由脚手架构建的。 我收到以下错误:

ActionView::Template::Error (undefined method `most_event_organized' for nil:NilClass):
    1: <div class="line_separation_equilibree"></div>
    2: <h3> league </h3>
    3: <%= @bill_board.most_event_organized %>
    4: <div class="col-lg-4">
    5: 
    6: <br>

有人知道这应该如何工作吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您必须在调用方法

之前创建新的BillboardService对象。
@bill_board = BillboardService.new()
@bill_board.most_event_organized