在Rails中渲染datetime_select

时间:2011-12-10 20:09:57

标签: ruby-on-rails-3 datetime

当前表单代码:

<%= form_for @booking do |f| %>
    <%= render 'shared/error_messages', :object => f.object %>
    <time class="field">
        <%= f.label :date %>
        <%= f.datetime_select :date_time, :prompt => { :hour => "Hour", :minute => "Minute" } %>
    </time>
<% end %>

这会在新行中呈现每个选择项目。

由于我的noob StackOverflow状态,我无法发布图像,但我会尝试在解释性文本中显示它:

select year

select month

select day

...and so on with time.  

是否有一种简单的方法可以在同一行中呈现这些字段,即一行中的日期选择器,下一行中的时间选择器?

select year | select month | select day

渲染html:

<time class="field">
<option value="2006">2006</option>
...edited for legibility...
<option value="2016">2016</option>
</select>
<select id="booking_date_time_2i" name="booking[date_time(2i)]">

<option value="1">January</option>
...edited for legibility...
<option value="12">December</option>
</select>
<select id="booking_date_time_3i" name="booking[date_time(3i)]">

<option value="1">1</option>
...edited for legibility...
<option value="31">31</option>
</select>
 &mdash; <select id="booking_date_time_4i" name="booking[date_time(4i)]">
<option value="">Hour</option>
<option value="00">00</option>
...edited for legibility...
<option value="23">23</option>
</select>
 : <select id="booking_date_time_5i" name="booking[date_time(5i)]">
<option value="">Minute</option>
<option value="00">00</option>
...edited for legibility...
<option value="59">59</option>
</select>

</time>

1 个答案:

答案 0 :(得分:0)

我不会使用标准的datetime_select帮助器,我会使用你想要的select语句构建一个helper方法,并按照你想要的方式设置样式。

以下是select视图方法的文档链接:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

只需创建select语句即可获得所需的id和name值(例如,月份为booking_date_time_2i,小时为4i等),并将它们全部放在帮助器中,以便您轻松调用它们。