NoMethodError — неопределенный метод «обновления» для InlineTextStorage: класс

#ruby-on-rails #ruby-on-rails-4

#ruby-на-рельсах #ruby-on-rails-4

Вопрос:

У меня проблема с методом update . Когда я вызываю его в контроллере, я терплю неудачу NoMethodError - undefined method 'update' for InlineTextStorage:Class , в чем может быть причина?

 class StaticAreasController < ApplicationController
  def update
    @static_area = InlineTextStorage.update("key", "value")
  end
end

class InlineTextStorage
  def update(key, value)
    inline_text = StaticArea.find_by_key!(key)
    inline_text.text = value
    @@texts[key] = value
    update_cache
  end
end
 

Комментарии:

1. Попробуйте изменить это def update(key, value) на def self.update(key, value) в вашей InlineTextStorage модели

Ответ №1:

Вы пытаетесь вызвать метод экземпляра как метод класса. Вы должны добавить self. букву «а» в название.

 class InlineTextStorage
  def self.update(key, value)
    inline_text = StaticArea.find_by_key!(key)
 

Таким образом, метод доступен из класса.