Como encontrar e exibir um grupo de objetos com uma tag específica utilizando atua como taggable (redux)?

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

Pergunta

Eu quero mostrar uma lista de artigos na view show da minha tag. Eu estou usando o age como plug-in redux taggable em um aplicativo de Rails 2.3.2 e SQLite3. Eu tenho até o exemplo básico me leva, a atribuição de tags e em seguida, exibindo uma lista deles com o artigo.

Agora eu quero exibir uma lista de artigos que pertencem a uma tag, mas obter o seguinte erro:

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

Modelos

/article.rb

class Article < ActiveRecord::Base  
  acts_as_taggable
end

/user.rb

class Tag < ActiveRecord::Base  
  acts_as_tagger
end  

Controlador

/tags_contoller.rb

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

Ver

/tags/show.html.erb

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

Aqui está um link para o arquivo de migração .

Muito obrigado.

Foi útil?

Solução 3

Muito obrigado a Geemus, autor de atos como redux taggable para explicar isso para mim.

Para exibir uma lista de artigos com uma tag específica Eu só precisava mudar o tags_controller de:

/tags_contoller.rb

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

para:

Controlador /tags_contoller.rb

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

Outras dicas

Eu acredito que o plugin não é o único culpado aqui, é sqlite que está trazendo-lhe problemas. Eu encontrei este antes - parece sqlite não pode compreender 'nome_da_tabela.nome_da_coluna' sintaxe, mesmo que ele não é mencionado no site. No meu caso eu só mudou para MySQL, ea coisa toda foi sem problemas. Ver se isso ajuda.

O problema é que você tem um modelo chamado de objeto. Dê-lhe um nome que não tem nenhuma sobreposição com as classes de sistema de Ruby, como applicationObject ou mediaobject.

Eu poderia especular sobre o motivo que está causando os problemas que é, mas seria apenas especulação. aulas abertas é uma característica maravilhosa de Ruby, mas significa que você precisa ter cuidado para nomear suas classes por isso eles são distintos de Ruby e aulas de trilho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top