我有一张表格显示了一系列不同日期范围(上个月,上周等)的事件销售情况。
<% @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_day
和end_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_ago
和end_days_ago
,event
实例需要计算自定义日期的销售额。
所以我的问题:我可以在JS中找出所需的参数,但不知道如何将它们转到ERB文件。
我认为它与AJAX有关,从概念上讲这是错误的,但是我的搜索时间让我更接近解决方案。
答案 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样式。请注意,您可能必须处理错误处理,并且页面网址不会以这种方式更新。