0

我有一个datepicker,并且我想在 Movements 表的查询中使用选择的日期来检索相应的营业额。但是“ currentDate”没有加载picked date:我捕获了一个“无效日期”异常。我应该怎么做?

$("#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);

并检查确定,如果我以这种格式输入手动日期,它就可以工作。似乎是如何传递这个变量的问题,但我无法修复它。任何想法 ?

4

1 回答 1

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 函数(index.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" 

你就完成了!享受 !

于 2013-02-27T17:02:37.217 回答