繁体   English   中英

防止datepicker值从参数中剥离

[英]Prevent datepicker values from being stripped from params

我正在使用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]传递到URL中,该URL用于设置Twilio API调用的日期范围。

例如 / twilio / calls /?start = 2013-03-01&end = 2014-01-06

自从我创建了以下路由来对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})

根据规范的Rails指南

参数还将包括查询字符串中的所有参数。

因此,您要消除第一条路线,该路线不允许任何参数:

# 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参数,而且还可以访问startend

如果要维护默认路由,例如twilio/calls ,则可以声明路由重定向 ,如下所示:

# 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]) %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM