我正在使用bootstrap-datepicker.js(http://www.eyecon.ro/bootstrap-datepicker/)在rails视图中设置表的日期范围。
calls.html.erb
<form class="form-horizontal daterange">
<input type="text" data-date-format="yyyymmdd" id="start-date" name="start">
<span class="add-on">-</span>
<input type="text" data-date-format="yyyymmdd" id="end-date" name="end">
<button type="submit" class="btn submit-date">Submit</button>
</form>
<script type="text/javascript">
$(document).ready(function() {
$('#start-date').datepicker({
format: 'yyyy-mm-dd'
});
$('#end-date').datepicker({
format: 'yyyy-mm-dd'
});
});
</script>
它将params [:start]和params [:end]传递给我用来设置Twilio API调用的日期范围的URL。
实施例。 / twilio /呼叫/开始= 2013-03-01&安培;端= 2014年1月6日
自从我创建了以下路由以对api调用进行分页:
的routes.rb
match 'twilio/calls' => 'twilio#calls', :as => :twilio_page
match 'twilio/calls/:page_id' => 'twilio#calls', :as => :twilio_page
每当我前进到下一页结果时,它都会删除日期范围值。
如何保存:start /:end参数?
twilio_controller.rb 更新 - 添加了开始/结束数据
if params[:start].nil?
@start_date = DateTime.parse((Date.today - 7).to_s).strftime("%Y-%m-%d")
@end_date = DateTime.parse((Date.today - 1).to_s).strftime("%Y-%m-%d")
else
@start_date = params[:start]
@end_date = params[:end]
end
@user = current_user
@account_sid = @user.twilio_account_sid
@auth_token = @user.twilio_auth_token
@page_size = 5
@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, :"date_created<" => @end_date, :"date_created>" => @start_date})
答案 0 :(得分:0)
根据规范Rails guides:
params还将包含查询字符串中的所有参数。
因此,您希望消除第一个路径,该路径不允许任何参数:
# config/routes.rb
match 'twilio/calls/:page_id' => 'twilio#calls', :as => :twilio_page
为了说明,假设您正在尝试访问/twilio/calls/1?start=2013-03-01&end=2014-01-06
。实际上解析了查询字符串,这样您不仅可以访问page_id
参数,还可以访问start
和end
。
如果您想维护默认路线,例如twilio/calls
,您可以按如下方式声明route redirect:
# config/routes.rb
get '/twilio/calls', to: redirect('/twilio/calls/1')
这会自动将/twilio/calls
的所有请求重新路由到/twilio/calls/1
。
<强>更新强>:
为了澄清,URL查询参数被参数化并作为params
哈希的成员馈送到相应的控制器动作。因此,根据路径/twilio/calls/1?start=2013-03-01&end=2014-01-06
,您可以访问params[:page_id]
,params[:start]
和params[:end]
。您需要在操作中将后两个传递给API调用:
@recordingslist = @recordings.list({:page_size => @page_size,
:page => @page,
:"date_created<" => params[:start],
:"date_created>" => params[:end]
})
<强>更新强>:
为了跨页面视图保持查询参数,您可以将传递给twilio_page_path
的参数与查询字符串连接起来:
twilio_page_path((@page.to_i + 1).to_s + "?start=" + params[:start] + "&end=" + params[:end]) %>