2013-03-06 68 views
0

首先,我已经做了相当多的四处观望,虽然问题解决了答案,但我有一个问题,我认为它有点独特。我用下面的代码生成的复选框列表:如何从关联复选框列表中创建对象数组?

<% for student in Student.find(:all) %> 
    <div> 
    <%= check_box_tag "user[student_ids][]", student.id, current_user.students.include (student) %> 
    <%= student.name %> 
    </div> 
<% end %> 

单击底部的“更新”按钮后,我需要每过的框被放置到一个数组。然后我计划迭代数组并对每个选中的名称做一些工作。然而,我很难将这些名字都写入数组中。我真的不确定这种工作应该是哪种标准网络行为(即发布,获取等),所以我不知道如何设置路线。即使我可以设置一个到控制器的路由,我如何将检查过的学生放入一个Student对象数组中?

非常感谢您的帮助!

回答

0

我设法解决我的问题,而不是令人满意的方式。这是我最后使用的代码:

current_user.students.delete_all 
    if(params.has_key? :user) 
    params[:user][:student_ids].each do |i| 
     current_user.students<<(Student.find(i)) 
    end 
    end 

因为学生我管理的数量不是永远大于100,这个操作不是那么糟糕,因为它看起来。我将删除所有已存在的关联,然后遍历所有传递的参数。然后,我使用传递的参数id找到student对象,并将其添加到current_user的User-Student连接表中。

我希望这可以帮助某个人!

0

你的问题的完整答案取决于各种各样的事情,例如,你正在试图提交数组等(这将确定是否应该使用POST,GET,PUT或DELETE)。知道对于您的代码库的详细信息,如果你把下面的代码到的form_for在控制器已经宁静的路线之一,你应该能够看到检查名称数组:

<%= current_user.students.include(student).each do |student| %> 
    <div> 
     <%= check_box_tag "student_names[]", student.name %> <%= label_tag student.name %> 
    </div> 
<% end %> 

然后,当用户点击提交,params哈希将显示student_names = []。

并确保您的属性可根据需要进行访问。

在附注中,请查看上周的Railscasts专题片集。几乎完全解释你正在尝试做什么。不过,这是一项订阅服务。

+0

感谢您的快速响应!在获得该数组后,我计划循环使用它并检查每个学生是否已经参与了用户和学生之间的HABTM关系。如果学生还没有关联,我需要它来创建关联。如果它是相关的,我希望它什么都不做。我有这样的代码(或者至少我知道如何并能够通过Rails控制台完成这些工作),但是我需要将所选学生的数组传递给某个控制器,完成这些工作并刷新风景。 – 2013-03-06 19:36:22

相关问题