选择日期范围后更新视图(Rails,Javascript)

时间:2014-05-06 21:51:01

标签: javascript jquery ruby-on-rails ajax

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

    <% @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行根据CUSTOM日期范围计算销售额。事件实例可以基于两个整数(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_agoevent实例需要计算自定义日期的销售额。

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

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

2 个答案:

答案 0 :(得分:0)

想出来:

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

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

答案 1 :(得分:0)

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

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

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