datetime_select助手问题

时间:2011-06-17 18:35:19

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

我需要一些帮助,这是我的代码:

<%= f.datetime_select :date,  :start_year => 2011 %>

当我在我的应用程序中这样写时,我现在得到时间,我想在这个月中选择现在的时间,并且我希望在小时和分钟中选择不要现在获得时间和分钟我想在选择中看到“小时”和“分钟”字符串...

所以我写了这段代码:

<%= f.datetime_select :date,  :start_year => 2011, :prompt => { :hour => "Hour", :minute
    => "minute"  } %>

在上面的代码中,小时和分钟都很好,但月份和日期不好(不是现在的时间)

1 个答案:

答案 0 :(得分:1)

您可以在提示中指定日期和月份:

<%- t = Time.now %>
<%= f.datetime_select :date,  :start_year => 2011, :prompt => { :hour => "Hour", :minute => "minute", :month => t.strftime("%B"), :day => t.day} %>

修改: 谢谢你抓住乔伊。我的解决方案没有将默认月份设置为当前月份 - 即使您要传入月份编号(这是数据库期望发布的月份编号)。默认情况下会忽略提示,您似乎无法使用:default:prompt的组合。

我能想出的另一个选择是:

= f.datetime_select :date, :start_year => 2011, :prompt =>  { :hour => "hour", :minute => "minute"}

然后使用javascript更改默认的月份和日期:

# somewhere in application.js
$(function () {  
  if ($('#new_comment').length > 0) {  
    var model = 'comment'
    var atrib = 'date'    

    /* update the day */
    t3 = $('#' + model + '_' + atrib + '_3i');
    var dt = new Date(); 
    t3.val(dt.getDate());

    /* update the month */
    t2 = $('#' + model + '_' + atrib + '_2i');
    t2.val(dt.getMonth() + 1);

  }  
});  

这假设您的模型为Comment且列为date

这是working example