以一种形式创建多个用户

时间:2018-11-22 20:53:43

标签: ruby-on-rails

我有事件模型和显示页面,其中显示@event页面和客户注册表格。

现在,我的客户想要一种用于其他类型活动的表格,该表格也将具有客户字段,但标记的不是客户名称,而是父母/照顾者的姓名(对于客户而言类似的表格),并且他还想要一个{{1} }按钮的底部,这将允许父级/照顾者添加最多3个玩家。因此,商务需求是父母注册“玩家”。最多可以添加3个玩家。我想知道如何才能以一种形式创建4个客户。老实说,对我来说,这听起来有点奇怪。这有可能吗?还是应该介绍Add player模型和Parent模型并将它们彼此连接。因此,对于特定类型的事件,我将创建一个“家长/照顾者”和最多3个玩家。

Player

1 个答案:

答案 0 :(得分:1)

没有完整的细节可以为您提供具体的解决方案,但是将通过示例指导您正确的方向。

假设您有您的“父母”模型和您的“球员”模型,您想以相同的形式添加一个由3名球员组成的父母。

我们在您的父模型中定义了您可以接受玩家的嵌套属性,因此,例如,如果您想创建具有某些玩家的父母,则可以执行类似Parent.create(params_with_players_too)的操作,它将创建父母和还要创建与该父级关联的玩家。当然,请记住这些参数以正确的方式出现。

Class Parent < ActiveRecord::Base
  has_many :books
  accepts_nested_attributes_for :players
end 

Class Player < ActiveRecord::Base
  belongs_to :parent
end

在那之后,您的表格可能类似于

<%= form_for @parent do |f| %>
  <%= f.fields_for :players, [Player.new]*3 do |player| %>
    <%= player.text_field :name %>
  <% end %>
  <%= f.submit %>
<% end %>

在您的控制器中,您也必须允许玩家进行参数设置,

def create
    @parent = Parent.new(parent_params)
    if @parent.save
    ...
end

def parent_params
  params.require(:parent).permit(:attribute1, players_attributes: [:id, :name])
end

当然,您必须了解它并使其适应您的特定情况,希望对您有帮助。