首页 > 解决方案 > 控制器中的方法没有被视图中的调用触发?

问题描述

我的控制器中有一个方法,可以简单地计算用户拥有的患者数量。我测试了查询,当我手动传入 user_id 时它按预期工作(而不是从 devise 传入帮助器方法:current_user)。但是,当我尝试从我的视图调用该方法时,该方法没有被调用,我在打印输出语句中添加了只是为了查看它是否只是我的查询没有被执行但是我的日志确认甚至打印输出语句都没有被执行调用。

对此的任何帮助将不胜感激!

病人控制器.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 控制台记录日志

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

标签: ruby-on-railsruby

解决方案


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

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

将代码中的该行更改为:

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

推荐阅读