将javascript日期传递给rails表单

时间:2012-10-05 07:32:04

标签: javascript ruby-on-rails-3 forms

在页面顶部,我有一个javascript datepicker。所选日期存储在变量newDate

下面我有一个像铁轨一样的表格:

<%= form_for(@checkin) do |f| %>
  ...
<% end %>

我希望上面选择的日期作为表单提交时的参数传递。我想做这样的事情:

<%= f.hidden_field :checkedin_at, :value => newDate %>

但我很确定我不能像这样混合客户端和服务器端代码。还有另一种方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以像创建一样隐藏字段,并且可以从javascript中将隐藏字段的值设置为实际值。

Erb部分:

<%= f.hidden_field :checkedin_at, :value => '', :id => 'date' %>

Javascript部分:

document.getElementById('date').setAttribute('value', newDate);

你可以在获得新的日期值时设置javascript,或者提交它是你的决定。

修改

如果您想稍后修改已保存的checkedin_at变量,则需要先阅读它。因此,您可能需要从模型中设置Erb中的实际值,并阅读:

newDate = document.getElementById('date').getAttribute('value');

旁注

使用javascript以不引人注目的方式进行操作是一个好主意。为不能使用普通浏览器的残障人士提供没有javascript支持的浏览器做好准备。

因此,一个简单的HTML解决方案是一个很好的可见日期字段与可解析(不是时间戳)日期字段。

答案 1 :(得分:0)

在提交时,您必须将数据字段数据复制到隐藏字段,然后提交表单。但如果您想在提交表单时提交所选日期,最好将日期作为表单的可见和可选字段。