作为一个完整的Ruby noob,我需要做一件简单的事情,但这样做的红宝石方式对我来说并不清楚。
想要做的是:
我有一个具有一对一关联的用户模型"帐户"
在设计注册视图中,我想为此帐户添加额外的表单字段,这就是我被困住的地方。
似乎我无法将帐户字段添加到视图
例如,这不起作用:
# address is a field of Account
<%= f.text_field :address %>
如何将帐户模型纳入范围?或者有办法做这样的事情
<%= f.text_field :account['address'] %>
我真的不知道如何将帐户添加到范围或如何正确访问用户关联帐户。
帮助
答案 0 :(得分:3)
您需要使用accepts_nested_attributes_for :account
才能从注册表单中添加参数。
然后通过覆盖设计方法configure_permitted_parameters将这些参数列入白名单。
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [account_attributes: [:address]])
end
您可能需要更改哪些参数需要列入白名单。
然后在视图中,您需要使用fields_for
之类的
f.fields_for(:addresss) do |address_fields|
<%= address_fields.text_field :address %>
end
希望这能解决问题。如果某些内容不起作用,请尝试搜索嵌套属性。
答案 1 :(得分:1)
当用户成功注册时,您需要从RegistrationsController
方法覆盖设计create
以构建account
记录