Rails 在文本字段中显示日期时间

Rails display datetime in text field

提问人:Dango 提问时间:9/1/2016 最后编辑:Dango 更新时间:9/1/2016 访问量:809

问:

有一个 _form.html.erb,我想在文本字段中显示日期时间,而不是下拉菜单。我下面的代码在我的文本字段中没有显示任何内容,我该怎么做......

<div class="field">
<%# f.label :time %>
<%# f.datetime_select :time %>
<%= f.text_field:time, :value => timesheet.user, :readonly => true %>
</div>

下图如下图

rails datetime into text field with datetime

@luissimo提到javascript之后,我想出了jquery中的一段代码

var tm1 =  $( "#timesheet_time_1i" ).val();
var tm2 =  $( "#timesheet_time_2i" ).val();
var tm3 =  $( "#timesheet_time_3i" ).val();
var tm4 =  $( "#timesheet_time_4i" ).val();
var tm5 =  $( "#timesheet_time_5i" ).val();
var tm_all = tm1 + '-'+ tm2 + '-' + tm3 + ' ' + tm4 + ':' + tm5;   

$('#timesheet_time').val(tm_all); 
jQuery Ruby-on-Rails Ruby

评论

0赞 luissimo 9/1/2016
是否允许使用 Javascript?
0赞 Dango 9/1/2016
JavaScript - jquery,为什么不=)

答:

1赞 luissimo 9/1/2016 #1

首先将代码更改为此代码;

<div class="field">
<%# f.label :time %>
<%# f.datetime_select :time %>
<p class="output_time"></p>
</div>

然后找到 Rails 预定义的 datetime_select 的 id。使用 inspect 元素找到它。我将调用 id 的 #id1 来 #id5,只是为了解释目的。

然后在jQuery中执行如下操作;

$(".output_time").text( ($("#id3").val()) + ' ' + ($("#id2").find(":selected").text()) + ' ' +  ($("#id1").val()) );

$("#id3").change(function()
{
  $('.output_time').text( ($(this).val()) + ' ' + ($("#id2").find(":selected").text()) + ' ' +  ($("#id1").val()) ) ;
});
$("#id2").change(function()
{
  $('.output_time').text( ($("#id3").val()) + ' ' + ($(this).find(":selected").text()) + ' ' + ($("#id1").val()) ) ;
});
$("#id1").change(function()
{
  $('.output_time').text( ($("#id3").val()) + ' ' + ($("#id2").find(":selected").text()) + ' ' + ($(this).val()) ) ;
});

我在这里使用了 3 个 id,但你有 5 个,所以你可以在它后面添加它们,这样你甚至可以学习一些 jQuery 并制作自己的输出格式(DD-MM-YY-TT 等)。