2

オプションのリストで最初のnilオプションのみを無効にする方法があるかどうかを知る。 nil値を持つ複数のオプションがあります。例えば最初のnilオプションを無効にする - レール

我々は

options_for_select(
[["first", nil], 
["second", "second"], 
["third", "third"], 
["fourth", nil]]) 

を持っている場合、それは

<option name="first" value>first</option> 
<option name="second" value="second">Second</option> 
<option name="third" value="third">Third</option> 
<option name="fourth" value>Fourth</option> 

を生成し、無効な値を渡すと、とにかく私は1つを指定することができますnilを

options_for_select(
[["first", nil], 
["second", "second"], 
["third", "third"], 
["fourth", nil]] , :disabled=>"") 

<option name="first" value disabled>first</option> 
<option name="second" value="second">Second</option> 
<option name="third" value="third">Third</option> 
<option name="fourth" value disabled>Fourth</option> 

ですべての値を無効にします値に関係なく無効にする最初のオプション? 最終目標は、あなたの値を更新し、option_for_selectヘルパーに渡すことができます

<option name="first" value disabled>first</option> 
<option name="second" value="second">Second</option> 
<option name="third" value="third">Third</option> 
<option name="fourth" value>Fourth</option> 

答えて

0

を持つことです。上記の例で

arr = [["first", nil],["second", "second"],["third", "third"],["fourth", nil]] 

val = arr.select{|v| v[1].nil?} 
if val.any? 
    dis = val[0][0] 
    arr.push(:disable=>dis) 
end 

まず私は、アレイからのすべてのゼロ値を選択し、私は、最初のゼロ値を選択し、無効変数にその値を渡します。今、あなたはヘルパーに、これはあなたのために働く

options_for_select(arr) 

希望をarr変数を渡すことができます。

+0

これを試して更新します – Siva

0

2次元配列フォームを使用しているため、唯一のオプションは2番目の要素をキーすることです。代わりにハッシュを使用してみましょう:

hsh = { 
    "first" => nil, 
    "second" => "second", 
    "third" => "third", 
    "fourth" => nil 
} 

は、第一ゼロのキーを検索します。そのエントリ

key = hsh.find { |_, v| v.nil? }[0] 

マーク:

hsh[key] = :disable_this_one 

や配列を生成:

hsh.to_a.push :disabled => :disable_this_one 
=> [["first", :disable_this_one], ["second", "second"], ["third", "third"], ["fourth", nil], {:disabled=>:disable_this_one}] 

テストされていないため、多少の驚きがあるかもしれませんses。

+0

答えをありがとう、これを試して更新します – Siva

関連する問題