ruby-on-rails – 在Rails表单中初始化嵌套字段的正确方法
发布时间:2020-12-17 04:36:57 所属栏目:百科 来源:网络整理
导读:我想了解初始化模型嵌套字段的“正确”方法是什么. 假设您有一些模型的嵌套字段: class User has_one :address accepts_nested_attributes_for :addressend 并且您需要初始化这些属性(在这种情况下为地址)以在fields_for调用中使用它们. 到目前为止,我已经
我想了解初始化模型嵌套字段的“正确”方法是什么.
假设您有一些模型的嵌套字段: class User has_one :address accepts_nested_attributes_for :address end 并且您需要初始化这些属性(在这种情况下为地址)以在fields_for调用中使用它们. 到目前为止,我已经想到了三种方法. 首先,对模型进行after_initialize挂钩: class User after_initialize :init_address protected def init_address address ||= build_address end 然后我们在控制器中进行初始化: class UsersController def new @user = User.new @user.build_address end end 最后,我们可以使用辅助方法为我们做到这一点: module FormHelpers def setup_user(user) user.address ||= user.build_address user end end # view <%= form_for setup_user(@user)... %> 对于这种情况,是否有类似标准或“最佳实践”的内容?你是怎么做到的,为什么? 解决方法
我认为如果没有父模型,嵌套属性根本没有意义,那么这些嵌套模型的构建和初始化应该是父模型的责任.
我不明白为什么UsersController应该关心如何构建或初始化@ user.addresses.对我来说,给控制器这个责任,可能意味着在创建时他应该是解析和构??建嵌套属性的(在模型中发生). 我会选择第一种方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |