내 레일 프로젝트는 HTML 형식을 페이지 매김하고 다른 페이지는 페이징하지 않습니다. @contacts 컬렉션을 얻는 데있어 차이점을 다루는 좀 더 우아한 접근 방식을 제안 할 수 있습니까? 아마도 페이지 매김 버전은 HTML 만 지원하는 다른 방법일까요? paginate_contacts_path하나의 MIME 형식은 있지만 다른 HTML 형식은 페이지 번호 지정하지 않는 레일 컨트롤러의 모범 사례
resources :contacts do
collection do
get 'paginate'
end
end
및
ContactsController에 별도의 PAGINATE 방법을 가지고 :def index
if request.format.to_sym == :html
@contacts = Contact.paginate(page: params[:page]).search(params[:search])
else
@contacts = Contact.search(params[:search])
end
respond_to do |format|
format.html { render html: @contacts }
format.mobile { render mobile: @contacts }
format.json { render json: @contacts }
format.xml { render xml: @contacts.to_xml }
end
end
내 솔루션은 편안하고 자동적으로 나에게 경로 도우미 메서드를 제공 routes.rb의 자원으로 PAGINATE을 추가했다
def index
@contacts = Contact.search(params[:search])
respond_to do |format|
format.html { render html: @contacts }
format.mobile { render mobile: @contacts }
format.json { render json: @contacts }
format.xml { render xml: @contacts.to_xml }
end
end
def paginate
@contacts = Contact.paginate(page: params[:page]).search(params[:search])
respond_to do |format|
format.html
end
end
페이지 매기기 보석을 사용하면 페이지 매기기 매개 변수가 자동으로 추가되지만, 나는 당신이 제안하는 (그리고 나는 동의한다) def paginate 메소드가 있어야한다고 생각한다. 1) contacts_path 대신에 명시 적으로 어디에서나 참조하거나 2) 단순히 contacts_path ContactsController :: paginate로 리디렉션됩니다. # 2를 선택하면 어떻게해야합니까? –
# 2를해야한다는 것이 분명 해졌고 위의 그림과 같이 내 RESTful 리소스에 '페이지 매김'을 추가하여 만들었습니다. –
니스! 네, 제가 생각하는 것에 대한 단서를 가지고 있다고 생각합니다. 프로젝트를 진행해야하는 현재와 미래의 개발자들에게는 분명히 분명합니다. 프로젝트에 행운을 빌어 요! –