如何接受没有活动记录关联的模型的属性?

时间:2015-03-13 07:54:18

标签: ruby-on-rails ruby activerecord

我正在制作一个简单的团队分配应用。我有三种模式 - 球员,球队和轮次。这个想法是有一个玩家列表,用户可以从中选择那些当天在那里进行游戏的玩家。到目前为止,我有一些代码,它将数据库中的所有当前参与者随机分配给一个团队(在创建一个轮次时创建团队)。

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

在回合模型中,但它实际上并没有(或需要)与玩家的关联。有没有办法实现这个或类似的东西?我是否应该在管理复选框视图/提交的播放器控制器中设置一个操作,然后将用户的选择存储在会话数据中?

1 个答案:

答案 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而很好。