Rails : ActionView-Helper 'Collection_Select'에서 값을 사전 선택하십시오.
-
06-07-2019 - |
문제
나는 그것을 얻으려고 노력하고있다 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
트릭은 별도의 모델을 정의하지 않고도 이러한 것들에 대해 아주 잘 작동합니다.