我一直在尝试使用许多嵌套模型创建一个复杂的表单,并使其动态化.现在我发现使用accepts_nested_attributes_for创建嵌套模型并不困难,但是如果有多个嵌套模型,那么使它嵌套和动态似乎是不可能的.
我遇到了http://github.com/ryanb/complex-form-examples/blob/master/app/helpers/application_helper.rb,这非常优雅.有人能否对13号线和16号线有所了解?
13 form_builder.object.class.reflect_on_association(method).klass.new
Run Code Online (Sandbox Code Playgroud)
和
16 form_builder.fields_for(method, options[:object], :child_index => "new_#{method}") do |f|
Run Code Online (Sandbox Code Playgroud)
从直觉来看,第13行实例化了一个新对象,但为什么必须这么多方法调用呢?我在第16行找不到:child_index选项的任何文档.创建表单时,非常大的数字用作新模型的索引,而现有模型则按其id编制索引.这是如何运作的?
我一直在阅读Metaprogramming Ruby,对象模型就像鸡或蛋的困境.
在Ruby 1.8中,Object类是Class的一个实例.Module的超类是Object,是Class的一个实例.类的超类是Module,它是Class的一个实例(自引用).说类SomeClass; 结束在某处定义; SomeClass是Class的一个实例,但是它的超类是Object.为什么Class的实例将Object作为超类而不是nil?
此外,如果Object存在,那么Class必须存在,但是Module必须存在,但是对于Module来说,Object必须存在.这些课程是如何创建的?