Как найти и отобразить группу объектов с определенным тегом, используя действует как taggable (приставка)? - PullRequest
0 голосов
/ 19 июня 2009

Я хочу отобразить список статей в представлении моего тега. Я использую действия в качестве плагина tagxable для редукса в приложении Rails 2.3.2 и SQLite3. Я дошел до базового примера , назначив теги и затем отобразив их список со статьей.

Теперь я хочу отобразить список статей, относящихся к тегу, но получаю следующую ошибку:

undefined method `article' for #<Tag id: 1, name: "various", taggings_count: 1>

Модель

/ article.rb

class Article < ActiveRecord::Base  
  acts_as_taggable
end

/ user.rb

class Tag < ActiveRecord::Base  
  acts_as_tagger
end  

Контроллер

/ tags_contoller.rb

def show
  @tag = Tag.find(params[:id])
  @articles = @tag.articles
end  

Посмотреть

/ tags / show.html.erb

<% for article in @articles %>  
   ...  
<% end %>  

Вот ссылка на файл миграции .

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 20 июня 2009

Проблема в том, что у вас есть модель с именем Object. Дайте ему имя, которое не перекрывается системными классами Ruby, такими как ApplicationObject или MediaObject.

Я могу предположить, почему это вызывает проблемы, но это будет только предположение. Открытые классы - замечательная особенность Ruby, но это означает, что вы должны быть осторожны, называя свои классы, чтобы они отличались от классов Ruby и Rail.

0 голосов
/ 20 июня 2009

Огромное спасибо Гимусу, автору, действующему от имени тегов, который объяснил мне.

Чтобы отобразить список статей с определенным тегом, мне просто нужно было изменить тег_контроллера с:

/ tags_contoller.rb

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
0 голосов
/ 20 июня 2009

Я полагаю, что плагин здесь не тот, кто виноват, это sqlite, который доставляет вам неприятности. Я сталкивался с этим раньше - кажется, что sqlite не может понять синтаксис 'table_name.column_name', даже если он не упоминается на сайте. В моем случае я просто переключился на MySQL, и все прошло без проблем. Посмотрите, поможет ли это.

...