Ошибка 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 предоставит получатель.