我有事件模型和显示页面,其中显示@event
页面和客户注册表格。
现在,我的客户想要一种用于其他类型活动的表格,该表格也将具有客户字段,但标记的不是客户名称,而是父母/照顾者的姓名(对于客户而言类似的表格),并且他还想要一个{{1} }按钮的底部,这将允许父级/照顾者添加最多3个玩家。因此,商务需求是父母注册“玩家”。最多可以添加3个玩家。我想知道如何才能以一种形式创建4个客户。老实说,对我来说,这听起来有点奇怪。这有可能吗?还是应该介绍Add player
模型和Parent
模型并将它们彼此连接。因此,对于特定类型的事件,我将创建一个“家长/照顾者”和最多3个玩家。
Player
答案 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
当然,您必须了解它并使其适应您的特定情况,希望对您有帮助。