2010-08-02 3 views
0

J'essaie de rechercher un ensemble de données pour une valeur. Si l'ensemble de données contient la valeur, l'application fait quelque chose. Si ce n'est pas le cas, l'application fait autre chose. Les données se décomposent comme suit: J'ai des affiliés et des utilisateurs, chacun avec une relation HABTM à l'autre. J'ai une page où l'utilisateur peut s'inscrire pour les affiliés, qui sont affichés comme un groupe de cases à cocher.Rails sous-ensemble select retourne toujours vrai

Je veux les cases à cocher pour tous les affiliés pour lesquels un utilisateur est actuellement inscrit.

est ici le code de la vue (en HAML)

- @affiliates.each do |a| 
    %li 
    %label{ :for => "affiliate_#{a.id}"}= a.name 
    - if @current_user.affiliates.select{ |ua| ua.id == a.id } 
     = check_box_tag "affiliate_list[#{a.id}]", 1, true, {:id => "affiliate_#{a.id}"} 
    - else 
     = check_box_tag "affiliate_list[#{a.id}]", 1, false, {:id => "affiliate_#{a.id}"} 

Ce code retournant toujours vrai, et donc, vérifie les boîtes, même si un utilisateur n'a pas signé pour une filiale. J'ai recherché la méthode .select, mais je ne cesse de trouver le truc helper.

Répondre

0
if @current_user.affiliates.include?(a) 
+0

@ current_user.affiliates.select {| ua | ua.id == a.id} renvoie au mieux [] ce qui n'est pas faux ... donc @ current_user.affiliates.select {| ua | ua.id == a.id} == [] serait correct, mais semble tout simplement moche et n'est pas des rails tout au sujet de beau code;) – elmac

Questions connexes