我尝试使用rails3中的nested_form gem做一些不错的事情。 (我无法使用这个宝石,但看起来rails3总是需要一个宝石来做这些事情......而Google总是将我重定向到这个宝石,用于rails3中的嵌套表格)
所以我有这个架构:
后台的想法是创建一个Model1,然后创建一个嵌套的Model2,并在Model2的创建形式中,在列表中选择或创建一个新的Model3。
我支持很多东西,现在我正在寻找关于如何做到这一点的文档,但我需要帮助,因为rails3“猜测”了所有内容,所以我觉得我没有真正的教程或示例而不是做对的。
我没有触摸我的控制器,除了model2,我在其中添加了一个受保护的方法来查找@ model1:model1_id
class Models2Controller < ApplicationController
before_filter :get_model1
...
protected
def get_model1
@model1 = Model1.find(params[:model1_id])
end
如果有人可以帮助我如何妥善管理,那将非常有帮助。
谢谢
答案 0 :(得分:1)
这是一个很长的问题,需要很长的答案。我建议你去观看196 Nested Model Form part1,197 Nested Model Form part2和few more,例如复杂的形式。
通常,您可以让任何模型通过在模型中使用accepts_nested_attributes_for :model
来创建任何其他模型的实例。所以Model1会接受Model2而Model2会接受Model3。在你的Model2中(我知道你觉得你想把它放在控制器中,但不是)你可以有一个工厂方法来检查它是否有一个Model3实例的id或它是否有新Model3的属性并根据需要创建它......
上面的截屏视频将向您展示表单层次结构的方式,您需要编辑的唯一部分是最后一步是新模型还是现有模型,但这不是您的意思无论如何都遇到了麻烦:)