我的 rails 项目正在对 HTML 格式进行分页,而不是对其他格式进行分页。有人可以建议一种更优雅的方法来处理获取@contacts 集合的差异吗?也许分页版本应该是只支持HTML的不同方法?
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 作为 RESTful 资源,它会自动为我提供路由辅助方法:paginate_contacts_path
resources :contacts do
collection do
get 'paginate'
end
end
并在 ContactsController 中有一个单独的分页方法
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