防止从params中删除datepicker值

时间:2014-01-07 05:10:30

标签: javascript ruby-on-rails datepicker

我正在使用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})

1 个答案:

答案 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参数,还可以访问startend

如果您想维护默认路线,例如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]) %>