나는 약간의 시간을 허비하고 있음을 인정합니다. . 다중 선택 콤보 상자에서 params[]
에 배열 값을 가져 오려고합니다.레일 2.3.8 다중 선택은 배열을 반환하지 않습니다. <select name = 'foo []'multiple = 'multiple'>
이것은 레일 2.3.5 및 루비 1.8.6입니다 (알고 있습니다).
생성 된 HTML은 다음과 같습니다 select 태그의 이름이 '[]'로 끝나는하고 '여러'옵션이 설정되어 있는지
<select id="shows_" multiple="multiple" name="shows[]">
<option value="5">A Grand Night For Singing (Jan - Feb 2007)</option>
<option value="6">Who's Afraid of Virginia Woolf? (Mar - Apr 2007)</option>
...more options...
</select>
참고.
(rdb:62) p params[:shows]
["17,18,19"]
캡처 된 값이 정확한지,하지만 난이 ["17","18","19"]
즉 기대했던 : 나는 컨트롤러 액션의 상단에있는 디버그 중단 점을 설정하고 params[:shows]
보면 쉼표로 구분 된 N 개의 값으로 구성된 단일 요소의 배열이 아니라 N 개의 요소로 구성된 배열.
나는이 코드를 쉽게 코딩 할 수 있지만 실제로 작동하는데 익숙해졌고 기대했던 동작이 문서화 된 동작임을 확신하므로 당황 스럽다. 어떤 아이디어?
나는 http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag#691-sending-anray-of-multiple-options를보고 결과가 옳다는 데 동의한다. 나는 Rails 2.3.11 프로젝트에서 그것을 시도해 보았고 기대했던대로 작동했다. 당신이 방금 apidock에 제시되는 방식으로 어떤 똥을 만드는 경우 2.3.8에서 작동합니까? –
수정, 2.3.5가 아니라 2.3.8입니다. 나는 실제로 ActionController :: Dispatcher.call()에 스택 트레이스를 따라 갔고 params [ 'show']는 호출의 해당 시점에서도 위의 값을가집니다. –