2017-04-04 2 views
0

나는 다중 선택보기와 협력 부모 자식 관계를 선택하는 대신 다중의 다중 선택 및 작품에서 여러 항목을 사용자가 선택할 수있는레일은 ...

= f.collection_select :item_ids, Item.order("name ASC").all, :id, :name, {}, {:multiple => true, class: "form-control"} 

을 text_fields를 사용합니다.

그러나 나는 사용자를 3 가지 항목으로 제한하고 싶습니다. 그리고 그들을 앞 글자 스타일 텍스트 필드에 입력하길 원합니다.

= f.text_field "item_ids[]", {class: "form-control item-autocomplete", autocomplete: "off"} 
= f.text_field "item_ids[]", {class: "form-control item-autocomplete", autocomplete: "off"} 
= f.text_field "item_ids[]", {class: "form-control item-autocomplete", autocomplete: "off"} 

내가보기를 교체하고 여전히 [] items_ids 전에했던 것처럼 입력을 받아 컨트롤러를 얻는 방법을 알아내는 몇 가지 문제가 있어요.

나는 이것이 곧바로 될 것이라고 생각하지만, 그것을 알아낼 수 없습니다.

도움을 주시면 감사하겠습니다.

답변

0

궁극적으로 나는 내 자신의 솔루션을 자랑스럽게 해킹해야했지만 전문가는 내 질문에 대답하지 않았고 여전히 문제를 해결해야하기 때문에 더러워졌고 해킹 당했다.

이 문제를 해결하기 위해 입력 프로파일을 [item_ids] [name] 프로파일을 사용하여 배열로 밀어 넣는 대신 수동으로 입력을 만들었지 만 ID 대신에 문자열을 전달합니다.

컨트롤러에서 항목 조회를 수행하는 메소드를 작성하여 ID 배열을 작성하고 새 배열로 param 해시 값을 스왑 아웃했습니다. 그리고 허용 된 PARAMS을 보존하기 위해 나는 화이트리스트 PARAMS을 전달하고 새로운 해시를 돌려주는 내가 강력하게 형식화 된 언어로 이런 짓을하지 않을 것

if @profile.update(convert_item_names_to_ids(profile_params)) 

과 같이 새 값으로 item_ids ...과 .