0

当用户使用设计注册时,我正在尝试创建提供者记录。我已按照以下方式进行设置: 设计:用户属于组织

但是没有创建提供者。我可能做错了什么?

用户 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"},

在我提交表单时的用户属性中。

4

2 回答 2

1

虽然我看不到完整的用户注册表单来确定您传递给表单构建器的块变量,但我假设它是|f|. 如果是这样,您需要ffields_for.

f.fields_for :provider

这样,您将传递:provider_attributes您的参数,而不仅仅是提供者。我看到你已经添加:provider_attributes到 attr_accessible (另一个常见的陷阱),所以现在你只需要确定这是你的传递!

来源:http ://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

于 2012-11-28T06:43:26.303 回答
0

啊哈!自救。:)

似乎有必要创建提供者模型,如果它为 nil,以便帮助者知道要做什么(或什么)

所以我将它添加到模型中:

 def provider
    super || build_provider
  end

如何让设计与 Accept_nested_attributes_for 在一个有一个关系中工作?

于 2012-11-28T09:16:23.967 回答