【问题标题】:Update View After Selecting Date Range (Rails, Javascript)选择日期范围后更新视图(Rails、Javascript)
【发布时间】:2014-06-23 16:24:18
【问题描述】:

我有一个表格,按事件显示了一系列不同日期范围(上个月、上周等)的销售额

    <% @events.each do |event| %> 
      <tr class="<%= cycle("odd", "even") -%>">
       <td class=" "><%= number_to_currency(stripe_to_display(event.sales(VARIABLE_1,VARIABLE_2))) %></td>
       <td class=" "><%= number_to_currency(stripe_to_display(event.sales(0,0))) %></td>
       <td class=" "><%= number_to_currency(stripe_to_display(event.sales(7,0))) %></td>
       <td class=" "><%= number_to_currency(stripe_to_display(event.sales(30,0))) %></td>
       <td class=" "><%= number_to_currency(stripe_to_display(event.sales)) %></td>
      </tr>
     <% end %>

第一个 td 行根据自定义日期范围计算销售额。事件实例可以根据两个整数(start_dayend_day)计算销售额。 (它们代表从今天开始的天数。)

当一个日期范围被选择时,这个 Javascript 被调用:

$(document).ready(function() {
$('#sales_date_range').daterangepicker(
{ 
format: 'YYYY-MM-DD',
startDate: $.now,
endDate: $.now
},
function(start, end, label) {
var now = new Date();
var start_days_ago = (now - start) / 86400000;
var end_days_ago = (now - end) / 86400000;
start_days_ago = start_days_ago.toFixed();
end_days_ago = end_days_ago.toFixed();
}
);

});

重要的是,最后一个 Javascript 函数计算 start_days_agoend_days_ago,这是 event 实例计算自定义日期期间销售额所需的。

所以我的问题是:我可以在 JS 中找出所需的参数,但不知道如何将它们放入 ERB 文件。

我认为它与 AJAX 有关,从概念上讲这是错误的,但我的搜索时间并没有让我更接近解决方案。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax


    【解决方案1】:

    想通了:

    我用 JS days 变量创建了参数:

    var path = '?start_day=' + start_days_ago + '&end_day=' + end_days_ago
    

    然后用新路径刷新页面:

    window.location = path;
    

    然后我的控制器可以访问这两个参数:

    @start_day = params[:start_day].to_i
    @end_day = params[:end_day].to_i
    

    【讨论】:

      【解决方案2】:

      如果您想要更快速的更新(不刷新整个页面),您也可以加载页面的一部分。保留您所做的更改(使用params[:start_day] 等),但将您的 javascript 更改为类似:

      $("#events").load('path/to/action #events', {start_day: start_days_ago, end_day: end_days_ago});
      

      并为您的表格提供events 的ID。然后只有它自己会更新的表,ajax 样式。请注意,您可能必须处理错误处理,并且页面 url 不会以这种方式更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 2017-10-19
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多