2010-08-02 64 views
0

我正在尝试搜索数据集的值。如果数据集包含该值,则该应用会执行某些操作。如果没有,应用程序会做其他事情。Rails子集选择始终返回true

数据分解如下:我有分支机构和用户,每个分支机构和用户都与另一个HABTM关系相关。我有一个页面,用户可以注册附属公司,这些附属公司显示为一组复选框。

我想要一个用户当前注册的所有分支机构的复选框。

下面是该视图(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}"} 

该代码总是返回true,因此,检查盒子,即使一个分支机构用户尚未注册。

我抬头看.select方法,但我一直想出表单助手的东西。

回答

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

@ current_user.affiliates.select {| ua | ua.id == a.id}返回[]最好不是false ... so @ current_user.affiliates.select {| ua | ua.id == a.id} == [] 会是正确的,但看起来很丑陋 并不是所有关于美丽代码的栏目;) – elmac 2010-08-02 17:04:06