неопределенный метод `distance_of_time_in_words 'для объекта - PullRequest
0 голосов
/ 16 января 2019

Я использую Rails 5.2.2 В моей БД много пустых (ноль) полей, и я создал собственный метод для использования distance_of_time_in_words в моей модели без ошибок.

  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

И я передаю свой объект из вида, используя:

<%= @customer.my_distance_of_time_in_words %>

Это работало хорошо, и я перезагрузил свой компьютер, и он говорит:

undefined method `distance_of_time_in_words' for #<Customer:0x00007f43b98601d8>

Это странно, потому что, как я уже сказал, это работает так, как я ожидал. Но сейчас это не работает.

1 Ответ

0 голосов
/ 16 января 2019

По умолчанию помощники по дате недоступны в вашей модели, поэтому вам необходимо явно включить их.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...