2010-07-26 3 views
3

나는 후보자를 찾는 검색 페이지가 있습니다. 이 페이지에서보기를 클릭하여 후보자에 대한 자세한 정보를 찾을 수 있습니다. 후보보기에서 편집을 클릭하거나 후보자보기로 돌아 오는 여러 가지 다른 작업을 수행 할 수 있습니다.레일 - 검색 쿼리/결과 저장

내 문제는 후보자보기에서입니다. 검색 결과로 돌아가려면 버튼을 추가해야합니다. 원래 역사가있는 JS 버튼을 사용한다고 생각했지만 -1 사용자가보기 내부에서 다른 작업을 수행 할 수 있기 때문에 작동하지 않습니다.

나는 아직 내 옵션이 확실하지 않은 레일에 대해 매우 익숙하지 않다. 캐시의 위치를 ​​추적하기 위해 결과의 캐싱과 숨겨진 필드를 생각하고있다. (생각하지 않는다. 이 ABIT 지저분한 얻을 수있는 숨겨진 가치를 추적하는 등 최적의 솔루션입니다!)

감사합니다, 알렉스

+0

도움을 주신 모든 분들께 !나는이 각각의 해결책을 생각해 볼 것입니다. – Alex

답변

10

아마도이 정보를 저장하기 위해 세션 변수를 사용할 것입니다.

먼저 검색 페이지에 게시하는 양식이 GET 작업인지 확인하십시오. 이렇게하면 검색 세부 정보가 쿼리 문자열에 포함됩니다. 이 같은 "검색 결과로 돌아 가기"를 할 수 있으며, 결과를보기에 지금

session[:search_results] = request.url 

:

를 다음 검색 행동에, 당신은 요청 URL을 잡아 수 있으며 세션에 저장 누군가가이 페이지를 건너 않고 이전 페이지로 돌아갑니다 아직도 (단지 구글 크롬 버튼과 같은) 그 검색 결과를 표시하는 버튼이 필요하면
link_to "Back to search results", session[:search_results] 
+0

나는 이것을 선호한다, 단 하나의 단점을 가지고있다. 그것은 다중 검색 세션을 허용하지 않을 것이다 ... – hurikhan77

+1

BTW : 나는 "session [: last_query] = params"를 필터 이후로 선호한다. 또한 게시 요청을 저장할 수 있습니다. 실제로 리디렉션 할 때이 작업을 수행하지 말고 실제로 컨트롤러가 결과를 표시 할 때만 매개 변수를 저장하십시오. – hurikhan77

2

당신은 서브 페이지에 쿼리의 매개 변수를 포함 할 수 있습니다. 예 : /foo/search?q=stuff 검색 결과가 표시됩니다. 각 결과에는 /foo/:id?q=stuff과 같은 링크가 있습니다. 서브 페이지에는 메인 페이지로 다시 링크 할 수있는 매개 변수가 있습니다.

이 솔루션은 서버 쪽 상태를 사용하지 않으며 일반적으로 웹 응용 프로그램을 만드는 좋은 방법입니다. 책갈피, 여러 탭 등과 같이 브라우저가 예상대로 작동 할뿐만 아니라 적절한 캐싱을 사용할 수 있습니다. 또한 응용 프로그램의 복잡성을 줄여 디버그 및 확장이 더 쉬워집니다.

1

사용자 ID가 입력 된 "search_results"테이블에 검색 결과를 입력 할 수 있습니다. 그런 다음 사용자가 페이지를 조회하면 항상 해당 테이블의 쿼리에서로드됩니다.

2

두 가지 옵션이 있습니다.

제안한대로 결과를 캐시하십시오. 잠재적 인 단점은 메모리가 필요하며 새로운 유효한 레코드가 추가되면 볼 수 없다는 것입니다. 세션 또는 데이터베이스에 캐시를 저장할 수 있습니다 (후자의 경우 많은 이익을 얻을 수는 없지만).

세션이나 숨겨진 필드를 사용하여 마지막 검색어를 기억하는 것이 좋습니다. 결국 검색 결과 페이지로 이동할 때 쿼리가 다시 실행되지만 제대로 인덱싱 된 DB에서는 큰 문제가 아닙니다.

행운을 빈다.

+2

아니요, 세션에 결과를 캐시하지 마십시오. 정말. 하지 마! – hurikhan77

0

, 그냥 사용 : 다시 .....

<%= link_to(image_tag("back.svg"), :back, :class => 'back_btn') %>