TLDR : 그대로 두십시오.
HTML 양식은 간단한 방식으로 일련 화됩니다. 매개 변수는 HTML 요소 다음에 이름이 지정됩니다. 실제 문제는 양식 요소의 이름 지정 방법입니다. 이름이 filter[ShoeBottomType][]
인 것 같습니다. HTML을보고 name
속성을 확인하십시오. 레일즈에 있기 때문에 Rails 컨트롤러 메소드에 전달되는 필터 해시를 하나의 인수로 사용하고 Rails가 해시에서 특정 URL을 사용하기를 기대하기 때문에 해시와 배열에 대해 format (역 직렬화하는 방법을 알고 있어야한다. 양식 요청자가 양식에서 그런 식으로 씁니다. 해시 값은 배열이므로 대괄호가 필요하기 때문에 특히 복잡합니다. 그런 다음 URL 인코딩되고 추악한 엉망으로 끝납니다.
큰 해시 대신 컨트롤러에 입력을 개별적으로 전달하여 이러한 문제를 피할 수 있습니다. 다음과 같이 입력하십시오 :
def index
shoe_bottom_types = params[:bottom_types]
shoe_classifications = params[:classifications]
shoe_elations = params[:elations]
...
/shoes?bottomTypes[]=1&bottomTypes[]=2...
. 그것은 훨씬 좋아 보이지 않는데, 이제 컨트롤러가 총체적입니다. 그리고 동일한 필터를 두 개 이상 갖고 싶다면 어떻게하면 괄호를 완전히 없앨 지 알 수 없습니다. 나는 당신이 미친 듯이 내고 shoeBottomTypes=1|2
을 깨는 것처럼 당신의 컨트롤러에서 당신 자신의 파싱을 할 수 있다고 생각합니다, 그렇지만 당신은 자신 만의 폼 직렬화를해야 할 것입니다. 다시 한번, 그만한 가치는 없습니다.
초 동안 백업, SEO 물건은 많은 의미가 없습니다. 검색 엔진은 양식을 작성하지 않습니다. 그들은 단지 링크를 따라 간다. GET을 사용해야하는 진정한 이유는 단지 검색 일 뿐이므로 양식을 제출하는 데 부작용이 없다는 것입니다. here; 올바른 HTTP 메소드를 사용하는 것이 중요합니다. POST를 사용하면 다시로드 할 때 이상한 경고가 표시되며 검색을 북마크에 추가 할 수 없습니다.
백업은 더욱 그렇습니다. 특히 SEO가 꺼져 버린 지금은 왜 신경을 씁니까? 그냥 빨리 데모로, 나는 단어 "일"에 대한 구글 검색을했고, 이것은 URL이었다
https://www.google.com/#hl=en&output=search&sclient=psy-ab&q=thing&pbx=1&oq=thing&aq=f&aqi=g2g-s1g1&aql=1&gs_sm=3&gs_upl=764l1877l0l1980l6l6l0l0l0l0l89l432l5l5l0&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=220ef4545fdef788&biw=1920&bih=1086
그래서 폼 제출에 대한 URL이 길어질 수 있습니다. 사용자는 심지어 보지 않을 것입니다.
여기에 URL의 길이/추함을 신경 쓰는 이유는 폼과는 별도로 특정 검색에 대한 링크를 만들려는 것입니다. 이를 처리 할 수있는 방법은 여러 가지가 있지만, 내가 당신과 관련이 있는지 여부를 알지 못하기 때문에이를 후속 조치로 알려 드리겠습니다.
결론적으로 나는 기대했던 것처럼 보였고 추악하고 무의미한 소리를 고치려고 노력했습니다.
예를 들어 방문자가 사이트를 방문하고 일부 필터를 선택한 다음 결과를보고 그/그녀/그녀의 친구에게 공유 (링크 받기)를 원합니다. looooong 링크가있는 내 변형에서 친구가이 링크를 열면 동일한 결과가 표시됩니다. POST를 통해 작동하는 경우 링크는 http : // localhost : 3001/shoes와 같으며 친구는 필터링하지 않고 모든 결과를 볼 수 있습니다. 나는 분명히 설명하기를 희망한다. –
URL에 필터를 넣는 대신 폼 (또는 결과)을 데이터베이스에 저장하고 일종의 영구 링크 메커니즘 ('http : // localhost/shoes? filter = 25'). 어느 쪽이든, 나는 이것이 어떻게 SEO에 영향을 미칠지는 모르겠다. 나는 여전히 이렇게 말하는 기사를보고 싶다. – Laurens
나는 will_paginate gem을 사용합니다 (예 : 그림과 같이 링크를 표시합니다). 그래서 will_paginate + ajax를 사용해보십시오. –