我正在制作一个简单的团队分配应用。我有三种模式 - 球员,球队和轮次。这个想法是有一个玩家列表,用户可以从中选择那些当天在那里进行游戏的玩家。到目前为止,我有一些代码,它将数据库中的所有当前参与者随机分配给一个团队(在创建一个轮次时创建团队)。
class Player < ActiveRecord::Base
has_and_belongs_to_many :teams
end
class Team < ActiveRecord::Base
has_and_belongs_to_many :players
belongs_to :round
end
class Round < ActiveRecord::Base
has_many :teams
end
我编写了一个在圆形创建期间调用的函数来创建和填充团队。这工作正常,但它只是从Player.all
得到了玩家的输入列表。
我希望在 rounds / new.html.erb 中有这样的内容:
<%= f.fields_for(@players) do |player| %>
<%= check_box_tag 'player_ids[]', player.id, true %>
<%= player.first_name %> <%= player.surname %>
<% end %>
这样submit
我可以为这一轮处理所选用户的数组,并且只将这些玩家分配给一个团队。我想过使用
accepts_nested_attributes_for :players
在回合模型中,但它实际上并没有(或需要)与玩家的关联。有没有办法实现这个或类似的东西?我是否应该在管理复选框视图/提交的播放器控制器中设置一个操作,然后将用户的选择存储在会话数据中?
答案 0 :(得分:0)
如果您将以下代码添加到表单中:
<% @players.each do |p| %>
<%= label_tag do %>
<%= check_box_tag 'players[]', p.id, false %>
<%= "#{p.first_name} #{p.surname}" %>
<% end %>
<% end %>
然后params[:players]
中会有一系列ID,然后你可以使用@iced的评论。
您的模型不必了解您如何获取这些ID,并且由于Separation of concerns而很好。