0

我有一个创建signed_user. 这是表格的第一行:

<%= form_for(setup_user(@signed_user)) do |f| %>

setup_user 在我的应用程序助手中:

def setup_user(user)
  user.tap do |u|
    u.build_invitation
  end
end

这些是模型关联:

signed_user模型:

has_one :invitation, :foreign_key => "sender_id"

invitation模型:

belongs_to :sender, :class_name => 'SignedUser'

那么为什么在没有邀请的情况下创建用户呢?我检查了我的控制台,用户的邀请为零...

4

1 回答 1

0

你想要的是一个嵌套形式。文章中提供了所有详细信息,但基本上确保您在 SignedUser 模型中使用accepts_nested_attributes_for。

class SignedUser < ActiveRecord::Base

  ...

  has_one :invitation, :foreign_key => "sender_id"
  accepts_nested_attributes_for :invitation, :allow_destroy => true
  ...

end

如果您希望表单修改 Invitation 模型中的属性(除了来自 SignedUser 的属性),您还需要在表单中使用 fields_for。例如:

    <%= form_for setup_user(@signed_user) do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>

      // More user form fields

      <%= f.fields_for :invitation do |cf| %>

        <%= cf.label :event_name %>
        <%= cf.text_field :event_name %>

        // More invitation form fields

      <% end %>

      <%= submit_tag %>
    <% end %>
于 2011-05-01T06:06:27.880 回答