不会通过View中的调用触发Controller中的方法吗?

时间:2019-03-18 19:48:27

标签: ruby-on-rails ruby

我的控制器中有一种方法可以简单地计算用户的患者人数。我测试了该查询,当我手动传递一个user_id(而不是通过devise的helper方法:current_user)传递时,它按预期工作。但是,当我尝试从View调用该方法时,该方法没有被调用,我添加了一条print out语句,只是为了查看是否只是我的查询未在执行,但是我的日志确认甚至没有在执行print out语句调用。

对此将提供任何帮助!

patient_controller.rb

helper_method :counter_patients

 def counter_patients
      puts "Tiggered"
      patient_user_counter = Patient.where(user_id: current_use).select(:user_id).count
  end

index.html.erb

<p> Count : <%= @counter_patients %> <p>

运行查询时从Rails Console登录

irb(main):015:0> r = Patient.where(user_id: 2).select(:user_id).count
   (0.4ms)  SELECT COUNT("patients"."user_id") FROM "patients" WHERE "patients"."user_id" = ?  [["user_id", 2]]
=> 7

1 个答案:

答案 0 :(得分:0)

在您看来,您插入<%= @counter_patients %>,它调用实例变量@counter_patients

但是您实际上要调用方法counter_patients(请注意缺少的@)。

将代码中的该行更改为:

<p> Count : <%= counter_patients %> <p>