J'ai reçu beaucoup d'aide de KandadaBoggu sur ma dernière question et je vous en suis très reconnaissant. Comme nous étions enterrés dans les commentaires, je voulais sortir cette partie. J'essaie de créer une fonctionnalité d'étiquette sur le blog de rails que je suis en train de développer. La relation est Post has_many: tags et Tag belongs_to: post. L'ajout et la suppression de tags dans les publications fonctionnent très bien.link_to paramètre de dépassement et problème d'affichage - caractéristique d'étiquette - Ruby on Rails
Dans mon /view/posts/index.html.erb j'ai une section appelée tags où j'interroge avec succès la table Tags, les regroupant et affichant le nombre à côté du tag_name (comme une note de côté, j'ai appelé par erreur la colonne contenant le nom du tag, 'tag_name' au lieu de simplement 'name' comme je devrais l'avoir). De plus, l'affichage de ces groupes est un lien référençant la méthode d'index dans PostsController. C'est là que le problème est. Lorsque vous accédez à/posts, vous obtenez une erreur car aucun paramètre n'est transmis (sans cliquer sur le lien du groupe de variables). J'ai le .empty? là-bas, donc pas sûr de ce qui ne va pas ici. Voici l'erreur et le code:
Erreur
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
/views/posts/index.html.erb
<% @tag_counts.each do |tag_name, tag_count| %>
<tr>
<td><%= link_to(tag_name, posts_path(:tag_name => tag_name)) %></td>
<td>(<%=tag_count%>)</td>
</tr>
<% end %>
PostsController
def index
@tag_counts = Tag.count(:group => :tag_name, :order => 'updated_at DESC', :limit => 10)
@posts=Post.all(:joins => :tags,:conditions=>(params[:tag_name].empty? ? {}:
{ :tags => { :tag_name => params[:tag_name] }}
)
)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
format.atom
end
end
Merci encore pour toute l'aide. Le seul code des 4 blocs donnés ci-dessus que je travaille est le second jeu posté par BaroqueBobcat mais il affiche le message dans l'index plusieurs fois. En fait, le nombre de fois qu'il est affiché est directement corrélé au nombre d'étiquettes que le poste a. Des idées sur la façon de résoudre ce problème? – bgadoci
juste pour clarifier, il ne fait que répéter dans la vue d'index, pas quand vous passez le paramètre en cliquant sur le groupe de balises. – bgadoci
J'ai mis à jour la réponse. Le correctif utilisera des jointures uniquement lorsque tag_name est présent. –