Как найти и отобразить группу объектов с определенным тегом, используя acts as taggable (redux)?
-
06-07-2019 - |
Вопрос
Я хочу отобразить список статей в представлении show моего тега.Я использую плагин acts as taggable redux в приложении Rails 2.3.2 и SQLite3.Я добрался так далеко, как только базовый пример занимает меня, присваивая теги, а затем отображая их список вместе со статьей.
Теперь я хочу отобразить список статей, принадлежащих тегу, но получаю следующую ошибку:
undefined method `article' for #<Tag id: 1, name: "various", taggings_count: 1>
Модели
/статья.рб
class Article < ActiveRecord::Base
acts_as_taggable
end
/пользователь.rb
class Tag < ActiveRecord::Base
acts_as_tagger
end
Контроллер
/tags_contoller.рб
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
Вид
/теги/показать.html.erb
<% for article in @articles %>
...
<% end %>
Вот такой ссылка на файл переноса.
Большое спасибо.
Решение 3
Большое спасибо Гим, автору acts as taggable redux за то, что объяснил мне это.
Чтобы отобразить список статей с определенным тегом, мне просто нужно было изменить tags_controller с:
/tags_contoller.рб
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
Для:
Контроллер /tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.tagged
end
Другие советы
Я считаю, что здесь виноват не плагин, а sqlite, который доставляет вам неприятности.Я сталкивался с этим раньше - кажется, sqlite не может понять синтаксис 'table_name.column_name', хотя это не упоминается на веб-сайте.В моем случае я просто переключился на MySQL, и все прошло без проблем.Посмотрим, поможет ли это.
Проблема в том, что у вас есть модель с именем Object .Дайте ему имя, которое не пересекается с системными классами Ruby, такими как ApplicationObject или MediaObject.
Я мог бы порассуждать о том, почему это вызывает такие проблемы, но это было бы всего лишь предположением.Открытые классы - замечательная особенность Ruby, но это означает, что вам нужно быть осторожным с именами своих классов, чтобы они отличались от классов Ruby и Rail.