使用jQueryUI Datepicker根据特定日期请求Rails视图

时间:2011-09-05 15:01:08

标签: javascript jquery ruby-on-rails jquery-ui datepicker

我在用户的个人资料页面上有一个jQueryUI Datepicker。当用户选择日期而不是使用日期值填充文本框时,我想立即发送GET请求以获取该用户在所选日期的统计信息。

网址将是这样的:

/users/1?date=20110905

然后我的UsersController会查看params[date]并查询模型以获取相应的基于日期的数据。

我遇到问题的部分是JavaScript部分。我需要挂钩jQueryUI Datepicker的onSelect事件,但是在我捕获事件之后:

  1. 如何从JavaScript代码中获取用户ID?
  2. 我应该如何提交GET请求?我想要整页重新加载,我应该使用window.location吗?

2 个答案:

答案 0 :(得分:2)

您可以使用location.pathname获取网址的路径,并且可以通过将location.href分配给要重新加载网页的网址来重新加载当前页面。所以,你可能会看到这样的东西:

$('#datepicker').datepicker({
    onSelect: function(dateText, inst) {
        // location.pathname == '/users/1'
        var userId = location.pathname.split('/')[2];
        var dateText = ...

        location = location.href + "?date=" + dateText;;
    }
});

注意,location.href为您提供整个网址,包括查询字符串(用于GET方法)和哈希,而location.pathname仅为您提供网址路径。有关location对象,请参阅the MDN documentation

答案 1 :(得分:0)

处理ERB文件时,< %%>标签首先在服务器上处理。然后,结果将发送到浏览器。因此,您可以将ERB标记注入到javascript中,如下所示:

var user_id = <%= user.id %>;

然后,您可以使用window.location重定向,例如索引操作:

window.location = "<%= url_for :action => :index %>";