Jquery Rails:FormBuilder的高级使用

Jquery Rails:FormBuilder的高级使用,jquery,ruby-on-rails,forms,ruby-on-rails-4,unobtrusive-javascript,Jquery,Ruby On Rails,Forms,Ruby On Rails 4,Unobtrusive Javascript,我正在开发我们的webapp,上周我的任务包括实现一个嵌套表单,该表单具有动态字段添加删除功能(从关联的子模型)。请注意,表单实现了具有一对多关系的两个模型。我对它进行了研究,发现了不同的方法,其中一些方法添加/删除字段,而另一些方法使用js(rails 3或更早)。我遵循了railscast-196和,但解释的助手方法不是不引人注目的方法,对吗?(因为它仍然在html中使用js) 我正在寻找一种通过jquery以不引人注目的方式实现添加/删除特性的方法 从逻辑上讲,这应该可以通过 -发出aja

我正在开发我们的webapp,上周我的任务包括实现一个嵌套表单,该表单具有动态字段添加删除功能(从关联的子模型)。请注意,表单实现了具有一对多关系的两个模型。我对它进行了研究,发现了不同的方法,其中一些方法添加/删除字段,而另一些方法使用js(rails 3或更早)。我遵循了railscast-196和,但解释的助手方法不是不引人注目的方法,对吗?(因为它仍然在html中使用js)

我正在寻找一种通过jquery以不引人注目的方式实现添加/删除特性的方法

从逻辑上讲,这应该可以通过 -发出ajax请求以构建嵌套模型的实例, -通过jquery在服务器端生成响应, -更新视图,然后 -将更新后的视图发送回客户端

问题: -我面临的问题是将builder对象传递给jquery。 期望: -通过jquery将两个自定义的添加和删除字段函数绑定到视图中的按钮


另外:你能给我一个链接到FormBuilder更深入的文档吗?因为rubyonrails api没有足够的解释。他们甚至没有说如果你使用form_builder.object,你会(明确地)得到模型,更不用说ryanb使用FormBuilder的“f.object.class.reflect_on_association”。

有一个gem明确地说明了你想要实现的:

如果要手动创建,请执行以下计划:

  • 您不需要发送AJAX请求来构建嵌套模型的实例(当用户单击“添加新实例”按钮并关闭浏览器选项卡时,会发生什么情况?实例将保留在DB中)

  • 使用Rails的全部功能–它允许您在一次移动中创建父模型和子模型,一次
    创建
    保存
    调用父模型

  • 因此,在JS中需要做的就是创建两个按钮,一个添加一些新字段,另一个删除它们。只有HTML,没有AJAX调用

  • 要使用嵌套属性,在为
    父对象生成参数时必须遵守某些约定。创建
    保存
    。通常,在创建模型时,将一些属性传递给
    create
    方法,这些属性对应于模型的字段。使用嵌套属性时,需要传递一个附加属性,该属性的格式如下:
    [children\u relation\u name]\u attributes
    。因此,如果您有
    项目
    任务
    模型,并且希望同时创建项目和任务,那么您需要像这样创建它们:

    创建(名称:'Project 1',tasks_属性:[{name:'Task 1'},{name:'Task 2'}])

  • (注意任务没有ID–Rails将自动分配它们)

  • 只有当
    Parent
    model有
    有多个:children
    并且
    接受子对象的嵌套属性时,上述所有操作才有效

  • 因此,您的任务只是构建包含
    子属性的正确参数
    param,将此参数添加到强参数中(例如
    子属性:[:name,:age,…]
    )。对于
    可以使用
    form\u,对于
    可以使用
    fields\u来构建表单,JS可以正确地将字段放入表单,嵌套属性可以同时创建父记录和子记录。这就是
    cocoon
    gem所做的


  • 至于Rails文档,它非常好,而且非常全面。是的,没有人是完美的,可能会有一些差距,但没有什么比这个文档更好的了。您也可以参考Rails代码,但这比仅仅阅读文档要困难得多。

    您不需要将builder对象传递给JQ,您可以使用Javascript加载部分,这是Rails响应浏览器请求时使用的纯HTML。Joe Half Face:删除已经存在且已填充的字段怎么样?