문제

나는 그것을 얻으려고 노력하고있다 ActionView-Helper collection_select 드롭 다운 메뉴에서 미리 선택 될 값을 취합니다.

어느 것도 아니다 (:selected HTML-Option-Hash에서)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {}, {:selected => @my_collection_object.id}) %>

(도:selected 옵션 하시에서)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {:selected => @my_collection_object.id}, {}) %>

작동하는 것 같습니다.

내가 뭘 잘못하고 있죠? 누구든지 이것에 대해 나를 도울 수 있습니까?

도움이 되었습니까?

해결책

로부터 문서:

샘플 사용량 (연관성 선택 Author 예를 들어 Post, @post):

collection_select(:post, :author_id, Author.all, :id, :name_with_initial)

만약에 @post.author_id 이미 1이고, 이것은 반환 될 것입니다.

<select name="post[author_id]">
  <option value="">Please select</option>
  <option value="1" selected="selected">D. Heinemeier Hansson</option>
  <option value="2">D. Thomas</option>
  <option value="3">M. Clark</option>
</select>

그래서 당신은 그것을 확인하기 만하면됩니다 @my_object.my_method 사용 가능한 옵션 값 중 하나와 일치하는 값을 반환합니다. 일치가 있으면 해당 옵션이 선택됩니다.

다른 팁

에 따르면 문서, 만약에 @my_object.my_method 옵션 중 하나와 동일한 값을 가지며 기본적으로 선택됩니다.

반대로, 당신은 사용해 볼 수 있습니다 options_from_collection_for_select 함께 select_tag:

<%= select_tag 'my_object[my_method]', options_from_collection_for_select(@my_collection, :id, :description_string, @my_collection_object.id) %>

사용 :selected_value

%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {}, {:selected_value => @my_collection_object.id}) %>

@my_object.my_method가 nil을 반환하는지 확인하십시오. 그렇다면

호출 메소드가 NIL을 반환하는 경우 다음을 포함시키지 않고 선택할 수 없습니다. 프롬프트 또는 : 옵션 해시의 include_blank.

그 외에는 RDOC 예와 같이 Lambda를 사용해 볼 수 있습니다.

{:disabled => lambda {|category| category.archived? }

귀하의 경우에는 이것이 보일 것입니다

{:selected => lambda {|obj| obj.id == @my_collection_object.id }}

또한 컬렉션이 다양한 2 값 배열 배열 형태 인 경우에도 작동합니다.

CURRENCIES = [["USD", "$"], ["BRL", "R$"]]

<%= collection_select :thing, :currency, CURRENCIES, :first, :last %>

그만큼 :first 그리고 :last 트릭은 별도의 모델을 정의하지 않고도 이러한 것들에 대해 아주 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top