Ошибка NoMethod от моего

Я получаю эту ошибку в своем браузере, когда перехожу на страницу редактирования моей статьи:

Блоггер / приложение / просмотров / статьи /_form.html.erb

undefined method `tag_list' for #<Article:0x007ffb52130678>

Извлеченный источник (около строки № 20):

18:     <p>
19:         <%= f.label :tag_list %><br />
20:         <%= f.text_field :tag_list %>
21:     </p>

Моя статья модель:

class Article < ActiveRecord::Base
  attr_accessible :title, :body, :tag_list, :image
  has_many :comments
  has_many :taggings
  has_many :tags, through: :taggings
  has_attached_file :image

     def tag_list=(tags_string)
        tag_names = tags_string.split(",").collect{ |s| s.strip.downcase }.uniq
        new_or_found_tags = tag_names.collect { |name| Tag.find_or_create_by_name(name) }
        self.tags = new_or_found_tags
     end
end

У меня есть модель статьи, которая имеет много тегов. Это отношение представлено другой моделью, называемой тегами. Снова, я получаю эту ошибку на моей странице редактирования моей модели / контроллера Article. Мое приложение для блоггеров говорит, что в методе my:tag_list нет ошибки метода, но он существует в моей модели статьи. Я явно что-то упускаю и мне нужна помощь в заполнении этого пробела.

1 ответ

Решение

Вам нужно будет добавить

   attr_reader :tag_list

к вашей модели.

При работе с элементами формы Rails ожидает, что каждый элемент соответствует атрибуту модели. В вашем случае вы создаете виртуальный атрибут, но для этого требуются обычные методы получения и установки. Вы уже предоставили установщик, и attr_reader предоставит получатель.

Другие вопросы по тегам