使用包含嵌套资源的表单时,必须确保存在嵌套资源,以便表单构建器正常工作。
我已经看到过这种方法有很多种 - 在控制器中构建它们或在视图中构建它们,但我从未见过一致的方法。
如果表单包含嵌套的has_one
项,那么如果这些项在模型中已经存在,那么它们应该在哪里构建?
答案 0 :(得分:1)
一般来说,你是对的。人们到处都用。问题是 - 这是一个好习惯吗?它会影响其他开发人员吗?
在我看来,当您使用MVC
模式时,视图会说明您将如何为用户提供某些内容。因此,构建,获取,创建等是控制器工作。除此之外,您的代码应该像其他开发人员一样清晰。否则它会变得不一致,因为逻辑在控制器和视图之间被分开。
在这种情况下,这是优先的方式:
#model:
has_one :item
#controller:
def new
# ...
something.build_item if something.item.blank?
# ...
end