2010-06-09 6 views
0

Ruby 2.3.8에서 Ruby를 사용하고 있으며 검색 결과에 "정렬"기능을 구현하는 것이 좋습니다.(GET이 아닌) 컨트롤러의 동작에 컬렉션을 전달하는 방법

나는 (이것은 그것의 일부)보기를 가지고 :

<span>Sort by:</span>&nbsp;&nbsp; <%= link_to 'MORE RELEVANT', search_filter_relevance_path %> 

경로 파일 :

map.search_filter_relevance "/anuncios/search_filter_relevance", :controller => 'announcements', :action => 'search_filter_relevance' 

과 (지금까지 아무것도하지 않고) 컨트롤러의 동작 :

def search_filter_relevance 
    raise params.inspect 
    end 

공지 사항을 검색 할 때 컨트롤러 결과에 대한 콜렉션을 컨트롤러의 작업에 전달하여 모든 발표가 아닙니다.

어떻게하면됩니까?

+0

그래서, 당신은 몇 가지를 전달하려는 이미 렌더링 된 뷰에서 컨트롤러로 다시 배열 ? –

+0

Sort_link_to를 클릭 할 때 현재 검색 결과를 컨트롤러의 동작에 전달하여 필터링 할 수 있습니다. –

+3

그건 잘못된 것입니다. search_filter_relevance 메소드에서 모든 검색 결과를 원래 위치에서 다시 가져와야합니다. –

답변

1

질문이 불완전합니다. 전체 컨트롤러 코드의 세부 사항을 제공 할 수 있다면 좋았을 것입니다. 아직도 나는 대답하려고 노력할 것이다. 더 나은 접근 방법은 "검색어"자체를 전달하는 것입니다. 검색어가 인스턴스 변수 @search에 저장되어 있다고 가정 해보십시오.

<%= link_to 'MORE RELEVANT', search_filter_relevance_path(:search => @search) %>

을 그리고 당신의 경로가 있어야한다 :

귀하의 LINK_TO이어야

map.search_filter_relevance "/anuncios/search_filter_relevance/:search", :controller => 'announcements', :action => 'search_filter_relevance'

하고 조치를 :

def search_filter_relevance 
    #You can access the search term using params[:search] and then reproduce the search results in a filtered form! 
    #Example: If you using acts_as_solr to search your table(s).. (Can be applied to any other FTS plugin) 
    #This sorts the results in ascending order 
    #@result = Model.find_by_solr(params[:search], :order => "created_at ASC") 
end 
+0

이런 식으로 생각하고 있었는데 문제는 내가 내 코드에서 params [: search] (params [: announcements])에 공지 사항 컬렉션을받지 못한다는 것입니다. 대신 영구 링크를 수신합니다. 예를 들어, 나는 "{"controller "=>"announcements ","action "=>"search_filter_relevance ","announcements "=>"anuncio-3/apoyo-en-cbc/anuncio-tags-con-plugin/prueba-delta-1 "} 공지 사항을 어떻게 수집 할 수 있습니까? –

+2

여기 Brian의 요점은보기에서 컨트롤러로 컬렉션을 전달해서는 안된다는 것입니다. 검색 쿼리를 유지 관리해야합니다. 예를 들어. 누군가가 텍스트 필드에 "blah"라고 입력 한 것을 발견하면, 주문을위한 링크가 컨트롤러에 다시 쿼리를 전달해야하므로 컨트롤러가 데이터베이스에서 다시 검색하여 정렬합니다. – robertokl

+0

좋아, 이걸 시도해보고 알려 줄께. 감사 –

관련 문제