我正在使用找到here的Alloy的复杂表格示例。他提供的示例是两级层次结构,我正在尝试将其扩展为四层。
他有用于添加嵌套项的javascript函数。如何扩展四个嵌套层?
'.add_nested_item': function(e){
el = Event.findElement(e);
template = eval(el.href.replace(/.*#/, ''))
$(el.rel).insert({
bottom: replace_ids(template)
});
},
'.add_nested_item_lvl2': function(e){
el = Event.findElement(e);
elements = el.rel.match(/(\w+)/g)
parent = '.'+elements[0]
child = '.'+elements[1]
child_container = el.up(parent).down(child)
parent_object_id = el.up(parent).down('input').name.match(/.*\[(\d+)\]/)[1]
template = eval(el.href.replace(/.*#/, ''))
template = template.replace(/(attributes[_\]\[]+)\d+/g, "$1"+parent_object_id)
// console.log(template)
child_container.insert({
bottom: replace_ids(template)
});
}
答案 0 :(得分:1)
如果您需要处理三级层次结构,我认为它有点重载。首先重新考虑你的用户界面。
除此之外 - 我认为您不需要在控制器中构建关联对象,因为示例应用程序在视图中构建它们(如果需要)(app / views / projects / _form.erb):
<% @project.build_author unless @project.author %>
<% project_form.fields_for :author do |author_form| %>
答案 1 :(得分:1)
不幸的是,这不是我的专业领域......
让我说明我不会使用复杂形式示例中使用的示例进行如此多的嵌套。而是使用常规DOM API在JS中完全构建所需的表单输入。这应该会给你一个更清洁,更精简的实现,也更好的可测试。
干杯, 埃洛伊
答案 2 :(得分:0)
http://railscasts.com/episodes/197-nested-model-form-part-2
helmerj的评论:
对于最新的Rails3.rc ONe必须修改一行:
在“模块ApplicationHelper”
中link_to_function(name,“add_fields(this,\”#{association} \“,\”#{escape_javascript(fields)} \“)”)
删除不需要的h()函数。否则就像魅力一样。