在页面顶部,我有一个javascript datepicker。所选日期存储在变量newDate
下面我有一个像铁轨一样的表格:
<%= form_for(@checkin) do |f| %>
...
<% end %>
我希望上面选择的日期作为表单提交时的参数传递。我想做这样的事情:
<%= f.hidden_field :checkedin_at, :value => newDate %>
但我很确定我不能像这样混合客户端和服务器端代码。还有另一种方法可以解决这个问题吗?
答案 0 :(得分:1)
您可以像创建一样隐藏字段,并且可以从javascript中将隐藏字段的值设置为实际值。
<%= f.hidden_field :checkedin_at, :value => '', :id => 'date' %>
document.getElementById('date').setAttribute('value', newDate);
你可以在获得新的日期值时设置javascript,或者提交它是你的决定。
如果您想稍后修改已保存的checkedin_at
变量,则需要先阅读它。因此,您可能需要从模型中设置Erb中的实际值,并阅读:
newDate = document.getElementById('date').getAttribute('value');
使用javascript以不引人注目的方式进行操作是一个好主意。为不能使用普通浏览器的残障人士提供没有javascript支持的浏览器做好准备。
因此,一个简单的HTML解决方案是一个很好的可见日期字段与可解析(不是时间戳)日期字段。
答案 1 :(得分:0)
在提交时,您必须将数据字段数据复制到隐藏字段,然后提交表单。但如果您想在提交表单时提交所选日期,最好将日期作为表单的可见和可选字段。