私は、ゲーム結果を友人に保存するためのアプリを作成しています。私のアプリでは、グループはリーグと呼ばれます。グループに参加キーを追加する
リーグを非公開にするには、参加キーを追加したいと思います。リーグが作成されると、作成者は結合キーを選択します。後の他のユーザーは、ドロップダウンからリーグを選択し、正確な参加キーを入力することで参加できます。ジョインキーが選択されたリーグに一致する場合にのみ、ユーザーが選択できます。
コントローラー:
def edit
@user = User.find(current_user.id)
@league_list = League.all.map{|l| [ l.league_name, l.id ] }
# @league_keys = League.all.map{|l| [ l.join_key, l.id ] }
end
def update
@user = User.find(current_user.id)
if @user.update(user_join_league_params) #&& @league_list.league_id == @league_keys.league_id
@user.save
redirect_to root_path, :notice => "Successfully joined this league!"
else
render 'index'
end
end
私は、ユーザーが参加を完了するためにleague_id編集する必要が見ることができるように。
ビュー:選択したリーグ戦がキーに充填一致した場合のみ、更新操作を実行するために
<div class="panel panel-default" style="margin-right:10px; margin-left:10px; text-align:center">
<div class="panel-heading">
JOIN A LEAGUE
</div>
<div class="panel-body">
<%= simple_form_for(@user) do |f| %>
<%= f.select(:league_id, @league_list) %><br> <br>
# <%= f.input_field :join_key %><br> <br>
<p>!! Watch out this cannot be changed after !!</p>
<br> <br> <%= f.submit "Join league", class: "btn-submit" %>
<% end %>
</div>
</div>
は、だから私はこのフォームをしたいと思います。
私はstackoverflowの多数の投稿で答えを探していましたが、私はsimular問題の投稿を見つけることができませんでした。
どうすればいいですか?
EDIT:
関係:
class User < ActiveRecord::Base
belongs_to :league
end
class League < ActiveRecord::Base
has_many :games
has_many :multiplayergames
has_many :users
end
SECOND EDIT:
だから私はsolloutionを実装しようとしました。
私は= f.select <%ためsimple_formを使用していました(:league_id、@league_list)私はこのようにそれを実行しようとしました%>
:
<%= form_tag(user_path(@user), method: :put) do %>
<%= select_tag :league_id, options_for_select(@league_list) %><br> <br>
<p>Join Key</p>
<%= text_field_tag :join_key %><br> <br>
<p>!! Watch out this cannot be changed after !!</p>
<br> <br> <%= submit_tag "Join league", class: "btn-submit" %>
<% end %>
ただし、これはエラーを与える:
param is missing or the value is empty: user
THIRD EDIT:
コントローラ:
# JOIN A LEAGUE
def edit
@user = User.find(current_user.id)
@league_list = League.all.map{|l| [ l.league_name, l.id ] }
end
def update
@user = User.find(current_user.id)
@league = League.find_by_id(params[:league_id])
if @league.join_key == params[:join_key] && @user.update(user_join_league_params)
redirect_to root_path, :notice => "Successfully joined this league!"
else
redirect_to edit_user_path(current_user), notice: "Could not join league check if join key is correct!"
end
end
def user_join_league_params
params.permit!(:league_id,:join_key)
end
VIEW:次のように
<%= form_tag(user_path(@user), method: :put) do %>
<%= select_tag :league_id, options_for_select(@league_list, :league_id) %><br> <br>
<p>Join Key</p>
<%= text_field_tag :join_key %><br> <br>
<p>!! Watch out this cannot be changed after !!</p>
<br> <br> <%= submit_tag "Join league", class: "btn-submit" %>
<% end %>
このモデルの間の関係は何ですか? – uzaif
私はリーグに関するモデルからの関係を追加しました –
あなたは参加キーを持つリーグを持っていて、ユーザーは参加したいそのリーグの参加キーを入力します。もしそうなら、ユーザーがフォームに入力しなければならない結合キーを知る方法は? – Pavan