Verwendung fungiert als markierbare (Redux) So zu finden und eine Gruppe von Objekten mit einem bestimmten Tag angezeigt werden?

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

Frage

Ich möchte in meinem Tag des Erscheinens Ansicht, die eine Liste der Artikel angezeigt werden soll. Ich verwende die Handlungen als markierbare redux-Plugin in einer Rails 2.3.2 und SQLite3 App. Ich habe bis zum einfaches Beispiel nimmt mich bekam, Zuweisen von Tags und dann mit einer Liste von ihnen mit dem Artikel.

Jetzt möchte ich Sie zu einem Tag gehört, eine Liste von Artikeln angezeigt werden, aber die folgende Fehlermeldung erhalten:

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

Modelle

/article.rb

class Article < ActiveRecord::Base  
  acts_as_taggable
end

/user.rb

class Tag < ActiveRecord::Base  
  acts_as_tagger
end  

Controller

/tags_contoller.rb

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

Ansicht

/tags/show.html.erb

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

Hier ist ein Link auf die Migrationsdatei rel="nofollow.

Vielen Dank.

War es hilfreich?

Lösung 3

Vielen Dank an Geemus, Autor des Buches wirkt als markierbare redux zur Erklärung dieses für mich.

Um eine Liste der Artikel mit einem bestimmten Tag angezeigt werden nur benötigt, um die ich tags_controller zu ändern aus:

/tags_contoller.rb

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

zu:

Controller /tags_contoller.rb

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

Andere Tipps

Ich glaube, das Plugin ist nicht derjenige hier schuld, es ist SQLite, dass Sie Probleme mitbringt. Ich habe diesen eine vor - es scheint, SQLite nicht ‚table_name.column_name‘ Syntax verstehen kann, auch wenn es nicht auf der Website erwähnt wird. In meinem Fall habe ich gerade eingeschaltet zu MySQL, und das Ganze ging ohne ein Problem. Prüfen Sie, ob das hilft.

Das Problem ist, dass Sie ein Modell mit dem Namen Objekt haben. Geben Sie ihm einen Namen, der keine Überlappung mit Ruby-Systemklassen, wie ApplicationObject oder hat mediaobject.

Ich könnte spekulieren, warum das die Probleme verursacht es ist, aber es wäre nur Spekulation. Offene Klassen sind eine wunderbare Funktion von Ruby, aber es bedeutet, dass Sie Ihre Klassen vorsichtig sein müssen Namensgebung, so dass sie verschieden sind von Ruby und Rails Klassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top