2016-10-17 14 views
0

では正常に動作しない、私のフォームが正常に動作しない理由を誰かが私に説明してもらえ:フォームはレール

<%= form_for current_user, url: change_my_team_path, method: :put, remote: true, id: "my-team-form" do |f| %> 

        <div class="countries" id="england"> 
         <%= f.select :team, options_for_select(select_apl_teams), {:include_blank => change_blank(current_user)}, {:onchange=>"$(this.form).submit();", class: "selectpicker", "data-live-search"=>"true"} %> 
        </div> 
        <div class="countries" id="spain"> 
         <%= f.select :team, options_for_select(select_laliga_teams), {:include_blank => change_blank(current_user)}, {:onchange=>"$(this.form).submit();", class: "selectpicker", "data-live-search"=>"true"} %> 
        </div> 
        <div class="countries" id="italy"> 
         <%= f.select :team, options_for_select(select_seria_teams), {:include_blank => change_blank(current_user)}, {:onchange=>"$(this.form).submit();", class: "selectpicker", "data-live-search"=>"true"} %> 
        </div> 
        <div class="countries" id="germany"> 
         <%= f.select :team, options_for_select(select_bundesliga_teams), {:include_blank => change_blank(current_user)}, {:onchange=>"$(this.form).submit();", class: "selectpicker", "data-live-search"=>"true"} %> 
        </div> 

<% end %> 

この形式ではなく、私は最後の選択ボックスを使用する場合、唯一の作業最初3れますワーキング。私が同じ振る舞いをしている順序を変更すると、最後の選択ボックスが機能しています。最初の3つは機能しません。

1つのフォームに4つの選択ボックスを使用する理由があります。もし誰かが思考を持っていれば、私は高く評価されるでしょう。

+0

すべての選択ボックスに同じ名前を使用しているため、最後のものは他のすべての選択よりも優先されます。 'f.select:team_spain'、' f.select:team_england'のような異なる名前を使用し、データベースに同じ名前のカラムを持ちます。あなたのフォームは、あなたが望むように動作します。 – dnsh

答えて

0

f.select :team同じ名前とIDを持つ選択ボックスが生成されるので、最初にすべてのノードの一意のIDのHTMLルールを作成します。同じ名前とレールを持ち、要素名からparamsを取得するので、最後の要素。あなたは毎回の属性を再定義するので、あなたが新しいselectを追加するとき

+0

こんにちはサジャン。答えをありがとう、そうです。 –

0

うん、それは動作しません、あなたはmultiple属性を持つ1つの選択ボックスを使用する必要があります。

f.select :team, options_for_select(select_laliga_teams), multiple: true 

この場合、次のことができるようになります

ctrlボタンを押したまま複数の値を選択

+0

こんにちはオレグ。ご回答有難うございます。私は別の解決策を思いついた。私は隠しフィールドf.hidden_​​field:teamを作成し、JSを介して私は選択ボックスから値を渡し、$(this.form).submit();を呼び出します。 "、私はそれが最良の解決策であるとは確信していませんが、 –

+0

'check_box'を使うのがもっと簡単でしょうか? –

+0

私は少し神経質なデザイナーを持っていて、彼を動揺させたくありません:) –