我想按照这个想法建立一个表格:
1个作业有很多活动,1个活动有很多任务
我使用这个想法制作了作业 - 活动表格: http://railscasts.com/episodes/17-habtm-checkboxes
,表格看起来像这样
_form.html.erb
<% form_for @assignment do |f|%>
<% Activity.all.each do |a|%>
<% check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%>
<%end%>
<%end%>
因此它保存了作业,我检查过的所有活动。
当我尝试在此表单中添加保存任务的功能时出现问题。 这就是我试过的
_form.html.erb
<% form_for @assignment do |f|%>
<% Activity.all.each do |a|%>
<%= check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%> <br>
<% a.tasks.each do |t|%>
#THIS
<% check_box_tag "assignment[activity_ids][][]", t.id, "Something here"%><br>
<%end%>
<%end%>
<%end%>
但我不确定如何在评论后写下这一行。
因此,当它保存时,它应该在分配中保存活动以及任务
有没有办法做到这一点?
提前致谢
Javier QQ
答案 0 :(得分:0)
您可以尝试将赋值ID作为参数传递,并使用Helper方法将对象保存在多个模型中。在ActionView :: Helpers API中你有这样的东西:
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
所以也许在你的代码块中尝试这样的事情:
<% check_box_tag "assignment[activity_ids][][]", propagate(t.id)%>
在AssignmentHelper.rb中,尝试实现一个名为propagate的方法:
def propagate(id)
*Fetch the id of Activity
*Fetch the id of Task
*Save both objects
end
希望这有帮助。
答案 1 :(得分:0)
我推荐ryanb nested_forms。它会照顾你想要做的非常好而且非常快。
答案 2 :(得分:0)
您不需要使用任何外部库,因为Rails处理嵌套表单就好了。
熟悉使用fields_for,您的问题将被排序。