导轨 - 嵌套形式 - 2个水平
问题描述:
我想建立一个形式如下这样的想法:导轨 - 嵌套形式 - 2个水平
- 我已经分配,活动,任务,AssignmentActivity,ActivityTask和AssignmentActivityTask模型
-
1分配有许多活动和1个活动有许多任务
- (有之间的许多一对多的关系:
- AssignmentActivity
- AssignmentActivity - 任务,
- 和一个一对多的关系:
- 活动 - 任务)
- (有之间的许多一对多的关系:
我做 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%>
但我不知道怎么写的评论之后的行。
所以当它保存它应该分配里面保存的活动,也是任务
是否有这样做的一种方式?
在此先感谢
哈维尔QQ
答
你可以尝试通过分配ID作为PARAMS和使用辅助方法来保存在多个模型的对象。在::的ActionView API助手,你有这样的事情:
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
所以也许尝试在您的代码块是这样的:
<% check_box_tag "assignment[activity_ids][][]", propagate(t.id)%>
而在你AssignmentHelper.rb,尝试实施的方法叫传播:
def propagate(id)
*Fetch the id of Activity
*Fetch the id of Task
*Save both objects
end
希望这会有所帮助。
答
您不需要使用任何外部库,因为Rails处理嵌套窗体就好了。
使用fields_for变得更加舒适,您的问题将被排序。
+0
这就是问题......如果放在第一个表单fields_for nothing显示的内部 – JavierQQ23 2012-02-22 14:41:18
是否有任何文档或示例?谢谢 – JavierQQ23 2012-02-22 14:41:42
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html在文档中,有一个名为“Nested Attributes Examples”的会话,而不是调用Helper方法,您可以使用代码块里面可以做这项工作。 – 2012-02-22 22:32:56
我的意思是关于高清传播,因为这就是我不明白:) – JavierQQ23 2012-02-27 16:34:56