2013-06-02 4 views
0

Ceci est une question simple mais je ne peux pas comprendre car je suis nouveau sur les rails.Ruby & Rails - nombre conditionnel dans le bloc

Mon contrôleur a une variable @neighborhoods qui contient des enregistrements de quartier pour chaque entreprise dans la variable @businesses (chaque quartier has_one d'affaires)

À mon avis, je veux imprimer:

  1. Chaque nom unique de quartier
  2. Combien de chaque nom de quartier unique (peut être multiple car il est tiré de la variable @businesses)

Actuellement, j'ai:

<% @neighborhoods.uniq{|x| x.name}.each do |neighborhood| %> 
    <p><%= neighborhood.name %></p> 
    <%= @neighborhoods.where{name = neighborhood}.count %> 
<% end %> 

Je sais que le code ci-dessus est faux, mais il illustre ce que je suis en train de faire. Comment puis-je atteindre cet objectif?

+0

Essayez de valider à partir de votre modèle. 'validates: neighborhood,: uniqueness => {: scope =>: nom}' – coletrain

+0

Je suppose que c'est '@neighborhoods.where{name = voisinage} .count' – fotanus

+0

Cela fait beaucoup de logique pour une vue, essayez de la déplacer un objet de modèle ou de service. –

Répondre

3
<% @neighborhoods.group_by(&:name).each do |name, neighbourhoods| %> 
    <p><%= name %></p> 
    <%= neighbourhoods.count %> 
<% end %> 
+0

Merci, mais j'ai eu cette erreur: à la fois bloc arg et bloc réel donné – Zephyr4434

+0

Correction d'erreur typo ....... –

+0

Got it, merci beaucoup! – Zephyr4434