我正在寻找以下内容:所有用户的数组(在这种情况下只有 6 个),在他们的名字前面有一个复选框,从而生成游戏的可选玩家列表。
当前代码:
<%= form_for @game, url: games_path, :method => "post" do |f| %>
<%= f.label :name %>
<%= f.text_field :name, :value => "#{current_user.name}\'s Game" %>
<%= f.fields_for :participants do |ff| %>
<%= ff.label :user_id %>
<%= ff.text_field :user_id %>
<%= ff.check_box :user_id %>
<% end %>
<%= f.submit "Create Game", class: "btn btn-primary" %>
<% end %>
我现在在我的控制器中有3.times { @game.participants.build }这有效地为我提供了 3 个文本字段,我可以在其中填写参与者 ID,以便在参与者表中记录(与游戏相关联)。
我现在已经四处寻找 1.5 小时,但我似乎无法找到正确的答案。我需要的是一种语法,它为我提供了所有当前用户(比如@users)的列表,并附有一个复选框。当我单击复选框时,它应该将其 ID 添加到参数中,并且我应该能够使用链接的参与者 ID 创建一个新游戏。但是,我遇到了一些附加到 check_box 的 ID 的问题,它似乎总是 1。我读过一些关于复选框对哈希来说很痛苦的东西,但我没有其他解决方案 atm。
我试过:
<% @users.each do |i| %>
<%= check_box_tag "alternate_numbers[#{i}]" %> <%= i.name %><br />
<% end %>
但我看不出有什么办法可以修复表格本身的一部分。
GamesController 代码(编辑):
def new
@users = User.paginate(page: params[:page])
@games = current_user.games
@game = Game.new
3.times { @game.participants.build }
end
def create
@game = Game.new(params[:game])
@newround = @game.rounds.new
@newround.storyFragment = "New story!"
if @game.save && @newround.save
flash[:success] = "Created!"
redirect_to game_path(@game.id)
else
redirect_to root_url
end
end
描述起来非常模糊,因为我不确定如何实现这一点。
简而言之:check_box 应该包含循环中 user_id 的值。我现在正在使用 text_field 助手填写手动 ID,但我希望将复选框链接到视图中旁边的用户名。
任何指南/解决方案/提示?
谢谢