【问题标题】:Rails - getting jQuery datepicker value without using a form?Rails - 在不使用表单的情况下获取 jQuery datepicker 值?
【发布时间】:2025-12-08 10:45:01
【问题描述】:

在我的项目中,我有一个链接,单击该链接会运行报告。该报告从 2 个 jQuery 日期选择器接收 date_min 和 date_max。目前 javascript 用于获取 date_min 和 date_max 的值,然后在 URL 中使用,因此在控制器中我可以访问 params 中的值。

查看:

<li><a href="javascript:" onclick="get_report_values()">Report</a></li>

咖啡脚本:

@get_report_values = ->
window.open("/reports/test_report?date_min=" + $('#datepicker_min').val() + "&date_max=" +     $('#datepicker_max').val(), "_blank")

使用 javascript 为控制器设置要获取的值似乎是一个额外的步骤。是否有 Rails 最佳实践可以让我跳过这一步?我没有表单中的日期选择器,所以我不能使用 POST。我觉得数据不需要在请求之间保留,所以我觉得会话不合适。

任何建议将不胜感激。

谢谢

【问题讨论】:

  • 好吧,不想使用会话,那就使用 cookie:P

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


【解决方案1】:

最简洁的解决方案可能是将日期选择器放在一个表单中(GET 而不是 POST),或者使用提交按钮而不是链接,或者在 JS 中创建一个文本链接 theForm.submit()

我不认为您可以完全避免使用带有按钮(或图像提交)的普通表单,但您可以通过这种方式最小化 JS。

【讨论】:

  • 感谢您的帮助。我一直在研究为什么我们会使用 GET 而不是 POST。我们使用 GET 是因为它的资源路由是用于索引和显示,我们不使用 POST 是因为它的资源路由是用于创建和销毁吗?
  • 传统上(参见the HTTP spec),GET 用于检索(显示内容),不应有副作用(如创建/更新/销毁记录)。 POST(或其他方法/动词)用于更新等。搜索引擎往往只索引 GET,浏览器往往只预取 GET 等。由于 GET 在 URL 中有参数,它们是可收藏的和可共享的 - 适用于显示的 URL东西。我相信您知道,您可以将 GET 与表单一起使用。 Rails RESTful 路由遵循这些约定,但它们早于 Rails 和 REST。
  • 很棒的答案。我非常感谢您的努力。
  • 谢谢!真是太好了。
最近更新 更多