私の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にRESTfulリソースとしてpaginateを追加することでした。これにより、ルートヘルパーメソッドが自動的に提供されます:paginate_contacts_path
resources :contacts do
collection do
get 'paginate'
end
end
また、ContactsControllerに別の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