Как найти и отобразить группу объектов с определенным тегом, используя acts as taggable (redux)?

StackOverflow https://stackoverflow.com/questions/1019747

Вопрос

Я хочу отобразить список статей в представлении 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top