私はフルーツのリストを照会し、そのフルーツのIDと名前だけを@fruitに集めています。選択したオプションを指定してタグを選択する(または配列要素をインデックス0に移動する)
[32, "apple"],
[8, "bannana"],
[10, "cantelope"],
[11, "grape"],
[15, "orange"],
[41, "peach"],
[22, "watermelon"]
@ヘルパーで@fruitが使用されています。 @fruitのインデックス0にある "apple"は、selectの選択された値(最初のオプション)になります。これは作成された例ですが、デフォルトでは、 "オレンジ"は名前で表示されます(idではありません)。選択タグの選択値に "オレンジ"が必要です(最初のオプション)。
":prompt => 'orange'"は、セレクトに "オレンジ"の2番目のインスタンスを追加するだけです。これまで私がGoogleで見つけたことは、余分な価値や空白をリストに追加することにあるようだ。
配列のインデックス0は常に選択された値になります(選択ヘルパーでプロンプトまたは空白が使用されていない場合)、名前が "orange"(@fruit [x] .name == 'orange')、リストの残りの部分に既存のアルファソートを保持したままインデックス0に移動しますか?だから、@fruit配列は次のようになります。
@fruit[0] [15, "orange"],
@fruit[1] [32, "apple"],
@fruit[2] [8, "bannana"],
@fruit[3] [10, "cantelope"],
@fruit[4] [11, "grape"],
@fruit[5] [41, "peach"],
@fruit[6] [22, "watermelon"]
私は今考えることができる唯一のことは、@fruitを通って、「オレンジ」が新しい配列に追加し発見された場合に繰り返すことであろう。次に@fruit配列を繰り返し処理し、 "orange"の名前を持たないものを追加します。私はそれをどのように書くか分からないが、それは私が探しているものをやるように思える。おそらく、これを行う簡単な方法がいくつかあります(配列のどのインデックスが最初に書き込まれるかを指定する)がありませんか?
ありがとうございました!
ありがとうございました!検出方法は本当に私を正しい方向に向けるのに役立ちました。サブ配列インデックス1と一致する検出メソッドと、サブ配列からインデックス0を返すことで問題が終了しました。検出メソッドに関する別の質問をした後、私はこれで終わりました( 'orange'を含むサブ配列を見つけて最後のインデックスを返します:<%= f.select:fruits_id、options_for_select(@fruit、@ fruit.assocオレンジ)。最後)%> – Reno
は「最初の」赦免 – Reno