当用户使用设计注册时,我正在尝试创建提供者记录。我按照以下方式进行了设置: Devise: User belongs_to organization
但是没有创建提供者。我能做错什么?
用户has_one提供商。
我修改了我的注册表单:
<%= fields_for :provider do |provider_fields| %>
<%= provider_fields.label :name, :label => 'Company Name' %>
<%= provider_fields.text_field :name %>
<% end %>
我的模特
attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :provider_attributes
belongs_to :provider
accepts_nested_attributes_for :provider
我可以在rails的输出中看到:
"provider"=>{"name"=>"kjhkjh"},
提交表单时,用户属性中的。
答案 0 :(得分:1)
虽然我看不到完整的用户注册表单来确定您传递给表单构建器的块变量,但我认为它是|f|
。如果是,则需要将f
加到fields_for
前面。
f.fields_for :provider
这样,你在你的参数中传递:provider_attributes
,而不仅仅是提供者。我看到你已经将:provider_attributes
添加到了attr_accessible(另一个常见问题),所以现在你只需要确定这就是你的传递!
来源:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for
答案 1 :(得分:0)
似乎有必要创建提供者模型,如果它的nil,那么帮助者知道要做什么(或什么)
所以我把它添加到模型中:
def provider
super || build_provider
end
How to get devise to work with accepts_nested_attributes_for in a has one relationship?