Rails에서 collection_select의 HTML 옵션을 어떻게 설정하나요?


82

Rails에서 생성 한 선택 태그에 클래스를 추가하는 구문을 찾을 수없는 것 같습니다 collection_select. 도움?


1
하고 싶은 일을 예를 들어 주시겠습니까? 나는 당신의 질문을 이해하지 못합니다.
klew

물론입니다 ... rails의 <% = f.collection_select ... %>를 사용하여 다음을 생성합니다 : <select ...> ... </ select> 그냥 다음과 같기를 원합니다 : <select class = "foo "...> ... </ select>
tybro0103 2009

답변:


180

많은 Rails 도우미는 여러 해시 인수를 사용합니다. 첫 번째는 일반적으로 도우미 자체를 제어하는 ​​옵션이고 두 번째는 사용자 정의 ID, 클래스 등을 지정하는 html_options입니다.

메서드 정의는 다음과 같습니다.

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

매개 변수 목록에 여러 '= {}'가 있음을 알 수 있습니다. 이를 사용하려면 지정하는 첫 번째 옵션 세트를 실제로 중괄호로 묶어야합니다.

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'})

html 클래스 외에 지정할 옵션이 없으면 빈 해시 자리 표시자를 넣으십시오.

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'})

추가 API 문서는 http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select 에서 확인할 수 있습니다.


아, 조금 더 가까이서 문서를 읽어야 했어요 :)
tybro0103 2009

1
다음은 .css 스타일을 수정하고 jQuery onchange 이벤트를 사용하는 방법을 보여주는이 답변의 확장입니다<%= collection_select(:question , :text, Question.all , :id, :text, {:prompt => 'Select Question...'}, {:class=>'input', :name=>'normalSelect', :id=>'normalSelect', :style=>'width:50%', :onchange=>"$('#accordion').accordion('activate',2);$('#blind').show('blind', 500)"}) %>
wantrapreneur

드류, 좋은 대답입니다. collection_select에 대한 모든 의심을 제거합니다.
Swapnil Chincholkar

당신의 대답은 아주 정확합니다. 감사합니다.
Francisco Quintero

3
명확한 설명 감사합니다. 이것은 Rails의 속임수 중 하나이며 RailsDocs에서 제대로 문서화되지 않았습니다.
lacostenycoder 2015 년

9
= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.