2009-05-05 6 views
14

해시에서 사용할 수있는 값으로 선택 상자를 만들어야합니다. 일의 방법을 통해레일 - 객체 해시에서 선택 태그 만들기

1 => 'State A' 
2 => 'State B' 

가능 : 예를 들어

, 나는 '일'과 '일'상태 필드에서의 숙박을 제공합니다.

어떻게이 태그에서 선택 태그를 만들 수 있습니까?

답변

48

그냥 Schrockwell 등을 말했다 : 해시 @status_fields 당신이 쓸 수 있도록

Hash.each |a|이 양식 a = [key, value]의 배열을 반환합니다

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 
,

또는, 다음, 선택 목록 및 선택 목록 값으로 값 지점에 표시하기 위해 키를 원하신다면 :

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 

이 thing.status 또는 아무것도에 의해 주어진 옵션을 선택합니다 전무는

그냥 '2'원하는 선택의 인덱스입니다

<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %> 

을 사용하여 객체에 연결되지 않은 선택을 만들려면

를 반환되는 경우

추 신 : 원래 게시물이나 의견을 수정하기에 충분한 평판이 없습니다

+2

을 사용하거나 <% = select_tag ('name', options_for_select ([ "Dollar", "$"], [ "Kroner", "DKK"]]) % – montrealmike

7

select helper method{ text_displayed_in_select => select_value }의 형식으로 해시를 허용하므로 해시가 invert이 될 것입니다.


8

당신이

select "foo", "bar", @hash_object 

또는

select "foo", "bar", @hash_object.map { |h| [h.key, h.value] } 

뭔가를 할 수있는 아마

4

Hash.each |a|가를 반환 값으로 키 포인트를 만들기 위해 먼저 해시를 반전 것 a = [key, value] 형식의 배열이므로 해시는입니다.당신은 쓸 수 있습니다 :

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

을 양자 택일로, 당신은 선택 목록 값으로 선택 목록에 표시 할 수있는 키와 값 포인트를 원하신다면, 다음 :

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 
+0

그럼 어떻게 선택한 값을 말할 수 있습니까? –

+0

설명서에서 "인스턴스 개체의 메서드 호출에서 반환 된 값이 선택됩니다." 따라서 'thing'을 첫 번째 인수로 전달하는 대신 객체의 실제 인스턴스 인 @thing을 전달 해보십시오. – Schrockwell