次のものを探しています: すべてのユーザー (この場合は 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 }を持っています。これにより、テーブル参加者 (ゲームにリンクされている) に記録を作成するために、参加者 IDを入力できる 3 つのテキストフィールドが効果的に提供されます。 )。
私は今1.5時間探し回っていますが、適切な答えが見つからないようです。私が必要としているのは、現在のすべてのユーザー (@users など) のリストをチェックボックス付きで表示する構文です。チェックボックスをクリックすると、ID がパラメーターに追加され、リンクされた参加者 ID を使用して新しいゲームを作成できるはずです。しかし、常に 1 のように見える check_box に関連付けられた ID に問題が発生しています。
私は試した:
<% @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 を入力していますが、ビューのすぐ隣にあるユーザー名にチェックボックスをリンクさせたいと思います。
ガイドライン/解決策/ヒントはありますか?
どうも