Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript日期传递到rails表单_Javascript_Ruby On Rails 3_Forms - Fatal编程技术网

将javascript日期传递到rails表单

将javascript日期传递到rails表单,javascript,ruby-on-rails-3,forms,Javascript,Ruby On Rails 3,Forms,页面顶部有一个javascript日期选择器。所选日期存储在变量newDate 下面我在rails中有一个表单,如下所示: <%= form_for(@checkin) do |f| %> ... <% end %> ... 我希望上面选择的日期在提交表单时作为参数传递。我想这样做: <%= f.hidden_field :checkedin_at, :value => newDate %> newDate%> 但是我很确定我不能像这样混合

页面顶部有一个javascript日期选择器。所选日期存储在变量
newDate

下面我在rails中有一个表单,如下所示:

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

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

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

但是我很确定我不能像这样混合客户端和服务器端代码。有没有其他方法可以做到这一点?

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

雇员再培训局部分: 您可以在获得新的日期值或提交时进行javascript设置,这是您的决定

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

newDate = document.getElementById('date').getAttribute('value');
旁注 使用javascript以一种不引人注目的方式完成这项工作是个好主意。为那些无法使用普通浏览器的残疾人提供javascript支持的浏览器做好准备


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

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

谢谢。我删除了Erb行中的
:value=>'
,现在它似乎在签入为新签入的情况下以及在编辑现有签入时都能工作。
document.getElementById('date').setAttribute('value', newDate);
newDate = document.getElementById('date').getAttribute('value');