我在rails应用程序中使用Twilio API向用户显示他们的录音列表。假设用户总共有11个录音,我每页显示3个。
twilio_controller.rb
def calls
@user = current_user
@account_sid = @user.twilio_account_sid
@auth_token = @user.twilio_auth_token
@page_size = 3
@page = params[:page_id] || 0
@sub_account_client = Twilio::REST::Client.new(@account_sid, @auth_token)
@subaccount = @sub_account_client.account
@recordings = @subaccount.recordings
@recordingslist = @recordings.list({:page_size => @page_size, :page => @page})
end
calls.html.erb
<% @recordingslist.each do |recording| %>
<tr>
<td><%= recording.sid %></td>
</tr>
<% end %>
<%= link_to "Next Page", twilio_calls_path(@page + 1) %>
的routes.rb
#twilio routes
post 'twilio/callhandler'
get 'twilio/calls'
match 'twilio/calls' => 'twilio#page', :as => :twilio_page # Allow `recordings/page` to return the first page of results
match 'twilio/calls/:page_id' => 'twilio#page', :as => :twilio_page
分页信息内置于Twilio响应中,以便
@recordingslist.next_page
给我接下来的3个录音(在rails控制台中验证)。如何链接到该链接,以便当用户单击链接时,表格会加载接下来的3个结果?
谢谢!
答案 0 :(得分:1)
您可以使用像Kaminari这样的宝石进行分页。
答案 1 :(得分:0)
我建议使用twilio-ruby附带的分页功能。根据{{3}}:
ListResource.list()接受分页参数。
首先为Twilio列表视图创建一个路径。确保您可以传递page_id
参数 - 这是您的控制器操作将如何知道要呈现的页面:
# config/routes.rb
match 'recordings/page/:page_id' => 'twilio#page', :as => :twilio_page
match 'recordings/page' => 'twilio#page', :as => :twilio_page # Allow `recordings/page` to return the first page of results
然后,在page
操作中,提取page_id
参数(如果没有1
则设置为page_id
,并传递page_number
和page_size
作为@recordings.list
的参数:
# app/controllers/twilio_controller.rb
def page
page_size = 3
@page = params[:page_id] || 1
@sub_account_client = Twilio::REST::Client.new(@account_sid, @auth_token)
@subaccount = @sub_account_client.account
@recordings = @subaccount.recordings
@recordingslist = @recordings.list({:page_size => page_size, :page => page)})
end
最后,在您的视图中,将页码传递到twilio_page_path
中的link_helper
- 只需确保相应地调整页码(+1
以用于下一页{{1}对于上一页:
-1
请注意 - 如果您位于列表的开头或结尾 - 您可能会无意中最终传递无效的# view
<%= link_to "Next Page", twilio_page_path(@page.to_i + 1) %>
<%= link_to "Previous Page", twilio_page_path(@page.to_i - 1) %>
。因此,您可能希望在page_id
控制器操作中实现一些异常处理:
page