2013-02-23 150 views
0

我有一个datepicker,我想在Movements表的查询中使用选取的日期来检索相应的营业额。但“currentDate”不加载picked date:我收到了“无效日期”异常。我应该怎么做?如何将ajax日期传递给jquery?

$("#datepicker").change(function(){ 
     var currentDate = $("#datepicker").datepicker("getDate"); 
     var wantedTO = <%=Movement.where(:movementDate =>Date.parse("currentDate")).sum("turnover")%>; 
     $(document).ajaxComplete(function(){ $("#result").html("<p>Result here : </p>" + wantedTO);  
     });    
    }); 

需要注意的是,如果我取代

var wantedTO = <%=Movement.where(:movementDate =>Date.parse("currentDate")).sum("turnover")%>; 

通过

var wantedTO = <%=Movement.where(:movementDate =>Date.today).sum("turnover")%>; 

它给了我今天的营业额。所以我可能不会那么远!

编辑: 可以肯定的日期格式的,我添加了一行

var dateString = $.datepicker.formatDate("yy-mm-dd", currentDate); 

,并检查OK,如果我把一个手动日期以该格式的话,它的工作。看来这是如何传递这个变量的问题,但我无法修复它。任何想法 ?

+0

什么是使用日期格式 – 2013-02-23 15:35:32

+0

我觉得'Date.parse(“currentDate”)'应该是'Date.parse(currentDate)'。 http://jsfiddle.net/arunpjohny/26sT9/ – 2013-02-23 15:38:34

+0

Date.parse(currentDate)也不起作用。我插入了一个提醒日期格式的警报(currentdate):Sun Feb 2013 2013 00:00:00 GMT + 0100(CET)。在日期选择器的文本框中,它是02/24/2013。在我的基础上,这是2013年2月24日。你认为这是错误的原因吗?我如何纠正它? – 2013-02-24 09:20:04

回答

0

好的,我有我的答案。如果其他新手会面临同样的问题,我会对其进行总结。我的代码中存在一个很大的错误:您无法在Ajax代码中执行ruby查询。所以啥子,你要做的:

1在控制器中创建一个新的方法(排序)(movements_controller.rb):

def sort 
    selected_date = params[:date] 
    new_html_to_return = Movement.where(:movementDate =>Date.parse(params[:date])).sum("turnover") 
    render :text => new_html_to_return 
end 

2 - 在您的视图(索引创建POST AJAX功能。 html.erb):

<script> 
$(document).ready(function(){ 
var $datepicker = $("#datepicker"), 
    currentDate = new Date(), 
    dateString = ""; 

$datepicker.change(function(){ 
    currentDate = $datepicker.datepicker("getDate"); 
    dateString = $.datepicker.formatDate("yy-mm-dd", currentDate); 
    $.ajax({ 
     type: "POST", 
     // You're sending the variable to your Ruby on Rails controller 
     url: "movements/sort/", 
     data: {"date":dateString}, 
     }).done(function(data) { 
       $("#result").html("<p>Turnover: </p>" + data) 
     });       
    }); 
}); 
</script> 

3-在你的routes.rb创建相关的路线:

post "movements/sort" 

大功告成!请享用 !