Come trovare e visualizzare un gruppo di oggetti con un tag specifico usando gli atti come taggable (redux)?
-
06-07-2019 - |
Domanda
Voglio visualizzare un elenco di articoli nella vista mostra del mio tag. Sto usando gli atti come plug-in redux taggabile in un'app Rails 2.3.2 e SQLite3. Sono arrivato al esempio di base mi porta, assegnando tag e quindi visualizzandone un elenco con l'articolo.
Ora voglio visualizzare un elenco di articoli appartenenti a un tag ma ottengo il seguente errore:
undefined method `article' for #<Tag id: 1, name: "various", taggings_count: 1>
Modelli
/article.rb
class Article < ActiveRecord::Base
acts_as_taggable
end
/user.rb
class Tag < ActiveRecord::Base
acts_as_tagger
end
Regolatore
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
Visualizza
/tags/show.html.erb
<% for article in @articles %>
...
<% end %>
Ecco un link al file di migrazione .
Grazie mille.
Soluzione 3
Mille grazie a Geemus, autore di atti come redux taggabile per avermelo spiegato.
Per visualizzare un elenco di articoli con un tag specifico avevo solo bisogno di cambiare tag_controller da:
/tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.articles
end
a:
Regolatore /tags_contoller.rb
def show
@tag = Tag.find(params[:id])
@articles = @tag.tagged
end
Altri suggerimenti
Credo che il plugin non sia quello da incolpare qui, è sqlite che ti sta causando problemi. L'ho già visto prima - sembra che sqlite non riesca a capire la sintassi 'table_name.column_name', anche se non è menzionata sul sito web. Nel mio caso sono passato a MySQL e tutto è andato senza problemi. Vedi se questo aiuta.
Il problema è che hai un modello chiamato Object. Dagli un nome che non si sovrapponga alle classi di sistema di Ruby, come ApplicationObject o MediaObject.
Potrei speculare sul motivo per cui sta causando i problemi, ma sarebbe solo una speculazione. Le classi aperte sono una caratteristica meravigliosa di Ruby, ma significa che devi stare attento a nominare le tue classi in modo che siano distinte dalle classi di Ruby e Rail.