对象的未定义方法“ distance_of_time_in_words”

时间:2019-01-16 12:50:14

标签: ruby-on-rails ruby-on-rails-5

我正在使用Rails 5.2.2,我的数据库中有许多空(nil)字段,并创建了一个自定义方法以在模型中使用@UIScope @SpringComponent @Route("monitoring", layout = DashboardView::class) class MonitoringView() : VerticalLayout(), BeforeEnterObserver { ... } 且没有错误。

distance_of_time_in_words

我正在使用:p从视图中传递对象

  def my_distance_of_time_in_words
    if self.accounts.blank?
      "No Record Avaliable"
    else
      distance_of_time_in_words(self.accounts.first.updated_at,Time.now).titleize
    end
  end

运行良好,我重新启动了PC,并显示:

<%= @customer.my_distance_of_time_in_words %>

这很奇怪,因为正如我所说的那样,它正在按预期的方式工作。但是它现在无法正常工作。

1 个答案:

答案 0 :(得分:1)

默认情况下,日期助手在您的模型中不可用,因此您需要明确地将它们包括在内。

class Customer < ApplicationRecord
  include ActionView::Helpers::DateHelper

  def my_distance_of_time_in_words
    if self.accounts.blank?
      "No Record Avaliable"
    else
      distance_of_time_in_words(self.accounts.first.updated_at,Time.now).titleize
    end
  end
end

但是,更好的方法是使用辅助方法来完成您需要的操作,由于您已经可以使用ActionView::Helpers::DateHelper了,因此您无需显式包括{}:

module CustomersHelper

  def my_distance_of_time_in_words(customer)
    if customer.accounts.blank?
      "No Record Avaliable"
    else
      distance_of_time_in_words(customer.accounts.first.updated_at,Time.now).titleize
    end
  end
end