2011-03-10 2 views
0

을 만드는 페이지를 매기는 것이다 이것은 예 "/ 검색/국가 인도/제품 _-mobilephones"이 될 수 내 경로레일 3 : 잘못된 링크

match "/search/*keywords" => "public/search#index" ,:method=>:get, :as=>:search_with_keywords  

입니다

매김 링크를 만들 페이지를 매기는 것이다 사용하고 있습니다 "매김 링크

<%= will_paginate @results, :container => false, :class => 'pagination ajax' %> 

을 생성 된 링크가되어 만드는 동안
* 표시/키워드는 다음과 같은 문제를 일으키는 에 http : // localhost를 : 3000/검색 키워드 = 국가 인도 % 2Fproduct_type-mobilephones & LANG = & 페이지 EN = 2 "

내가 원하는 것은"HTTP : // localhost를 : 3000/검색/국가 인도/제품 _-mobilephones? LANG = & 페이지 EN = 2 "

내가 이것을 달성 할 수있는 방법

...

답변

2

당신이 레일을 의지 페이지를 매기는 (현재의 3 버전을 사용하는 경우"3.0.pre2 ")를 다음 :renderer 옵션을 사용하여 링크 생성 방법을 맞춤 설정할 수 있습니다.

먼저, 최신이 아닌 경우 will paginate wiki의 설치 지침 및 사용 지침을 따르십시오.

그런 lib에서 해당 링크 생성, 다음

class SearchLinkRenderer < WillPaginate::ViewHelpers::LinkRenderer 

    protected 

    def url(page) 

    @base_url_params ||= begin 
     url_params = base_url_params 
     merge_optional_params(url_params) 
     url_params 
    end 

    url_params = @base_url_params.dup 
    add_current_page_param(url_params, page) 

    @template.search_with_keywords_url(url_params) 
    end 
end 

와 같은 아마 뭔가를 덮어 자신의 렌더러를 만들 수있는 기본 렌더러

@template.url_for(url_params) 
를 사용

<%= will_paginate @results, :container => false, :class => 'pagination ajax', :renderer => SearchLinkRenderer %> 

로 전화

당신의 링크를 "엉망으로 만드는"것은 무엇입니까. 당신은 @template에서 어떤 경로를 사용할 수 있습니다, 그래서

@template.search_with_keywords_url(url_params) 

트릭을 할해야합니다. 이제 자신의 렌더러로 will_paginate를 호출하면 url_for 대신 경로를 사용해야하므로 매개 변수가 잘 일치해야합니다. 그들이하지 않으면 url_params가 설정되어 있는지 확인하고 경로 일치 자와 비교하십시오.

더 쉬운 방법이 있지만이 방법은 매우 간단하고 will_paginate가 출력을 사용자 지정하는 방법과 일치하는 것으로 보입니다. Rob Anderton이 willp_paginate here을 맞춤 설정하는 방법에 관한 훌륭한 기사를 가지고 있으므로 더 많은 통찰력을 제공 할 수 있습니다.

2

레일스 3의 will_paginate 대신 Kaminari을 사용하는 것이 좋습니다. Railscast을 통해이를 발견하고이를 내 응용 프로그램에 빠르고 효율적으로 통합 할 수있었습니다. 또한 전환 후 앱의 크기가 줄고 성능이 눈에 띄게 증가한 것으로 나타났습니다.

관련 문제