2013-06-06 2 views
2

같은 URL 매개 변수에 같은 이름의 검색어 매개 변수를 통합 :루비 나는이 같은 다중 선택 입력과 양식을 가지고

과 유사한 마크 업 생성
select_tag "activity_types[#{category}]", options_from_collection_for_select(ActivityType.all, "id", "name"), multiple: true 

:

<select id="activity_types_category" multiple="multiple" name="activity_types[category][]"><option value="2">Foo</option> 
    <option value="3">Bar</option> 
    <option value="4">Baz</option> 
</select> 

을 어느 정확히 내가 원하는거야. 문제는 모든 옵션을 선택하고 양식을 제출하면 URL은 다음과 같이 보입니다.

?activity_types%5Bcategory%5D%5B%5D=2&activity_types%5Bcategory%5D%5B%5D=3&activity_types%5Bcategory%5D%5B%5D=4 

잘 작동합니다. 그러나 완성 된 URL이 제 3 자 서비스를 위해 너무 길어서 몇 가지 문제가 있습니다. 그들은 url을 자신의 url에서 param으로 사용하고 있습니다. 그리고 내 url이 414 Request-URI Too Large 오류를 일으켰습니다. 쿼리 문자열은 다음과 같이 만들 수있는 방법이 있는지 궁금 : 나는 데 문제를 해결하고, URL을 좀 더 읽기 쉽게 만들 것

?activity_types%5Bcategory%5D%5B%5D=2,3,4 

.

미리 감사드립니다.

답변

1

문제는 URL을 통해 GET 요청에서 양식 데이터를 보내는 것입니다. 일반적으로 양식 데이터는이 제한이없는 POST를 통해 보내야합니다.

그리고 Rails (랙을 통해)가 params 해시를 구성하는 데 사용하는 요청 구조를 수정하지 마십시오. 이렇게하면 아마 당신에게 줄을 서서히 두통이 날 것입니다 ...

+1

이것은 검색 할 수 있도록 검색 결과를 북마크하고 싶습니다. 다른 제안이 있으십니까? 내가 원하는 것은 다른 이름으로 숨겨진 필드를 사용하고 다른 필드의 값을 기반으로 js를 사용하여 채울 수있는 유일한 방법이라고 생각합니다. – Stratus3D

관련 문제