2

옵션 목록에서 첫 번째 nil 옵션 만 비활성화하는 방법이 있는지 궁금합니다. nil 값을 가진 여러 옵션이 있습니다.첫 번째 nil 옵션 해제 - rails

우리가

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> 

를 생성하고 장애인 값을 전달하는 것은 어쨌든 내가 하나를 지정할 수 있습니다 전무

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 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

을 가지고 도우미를 option_for_select을 전달하는 것입니다. 위의 예에서

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 차원 배열 양식을 사용하고 있으므로 유일한 옵션은 두 번째 요소를 키잉하는 것입니다.

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

제 1 회 전무의 주요 발견 :의 대신 해시를 사용하자

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}] 

테스트되지 않았으므로 약간의 surpri가있을 수 있습니다. ses.

+0

답장을 보내 주셔서 감사합니다. – Siva

관련 문제