在 form_tag 表单中使用 jquery_datepicker
Posted
技术标签:
【中文标题】在 form_tag 表单中使用 jquery_datepicker【英文标题】:using jquery_datepicker in a form_tag form 【发布时间】:2013-11-09 07:39:50 【问题描述】:我正在尝试使用 jquery_datepicker gem 实现 rails 3.1 datepicker - 我想提供功能来指定可在各种视图中使用的日期范围(即开始和结束日期)。所以我建立了一个部分
app/views/shared/_date_range_form_content.html.erb
<div class='date_range'>
<%= form_tag "#route/#id" do %>
<%= label_tag "Start Date" %>
<%= datepicker_input nil, "start_date" %>
<%= label_tag "End Date" %>
<%= datepicker_input nil, "end_date" %>
<%= submit_tag 'Go' %>
<% end %>
</div>
我正在使用 form_tag,因此我可以传递路由(即表单将被定向到的控制器) - 这使我能够在多个地方使用这个部分。
我面临的问题是 datepicker_input。 jquery_datepicker 提供了一个 form_for 类型的方法——但这里我使用了一个 form_tag。所以 Chrome 的 DevTools 窗口显示 Uncaught TypeError: Object [object Object] has no method 'datepicker'
我做错了什么?我如何将日期选择器放入此表单中?
提前致谢
史蒂夫
【问题讨论】:
【参考方案1】:在 README 中你可以看到:
将此添加到您的视图中。
<%= datepicker_input "user","birthday" %>
其中“user”是您的型号名称,“birthday”是您的型号名称 日期字段。
所以form_for
不是必需的。
datepicker_input
助手:
def datepicker_input(object_name, method, options = )
datepicker(object_name, method, options)
end
我认为问题在于您将 nil
作为第一个参数 (object_name
) 传递。尝试传递“有效”对象而不是 nil
来调试问题。
【讨论】:
使用非模型表单的问题,使用form_tag结构最容易完成。您可以通过创建一个类并添加一些 ActiveModel 模块和一个持久化的?方法 - 但它确实是一个faff。然后,您可以使用 date_picker 支持的 form_for。 尝试添加 :foo 而不是 nil。以上是关于在 form_tag 表单中使用 jquery_datepicker的主要内容,如果未能解决你的问题,请参考以下文章
form_tag:在 params[] 中保留许多 text_filed_tag 的值