简单格式化时间字段以显示'21:30'而不是整个UTC时间字符串

时间:2013-06-12 04:50:56

标签: ruby-on-rails ruby-on-rails-3 time format simple-form

我的导轨_form代码:

<%= simple_form_for @admin_event, :html => { :class => 'main-form' } do |f| %>
  <%= f.input :time_of_event, :format => l(:time_of_event, '%d %b. %Y'), :as => :string, :label => 'Hora', :input_html => { :class => 'thin', :placeholder => 'eg: 20:30' } %>
<% end %>

我收到错误消息:

Cannot convert symbol to string.

如何设置此_form以始终使用时间转换器显示此字段,以便数据库具有完整字段(2000-01-01 19:30:00.000000)时,在表单中只显示{{1} }?

2 个答案:

答案 0 :(得分:7)

解决了以下问题:在我的ApplicationHelper上创建方法“time_format”:

def time_format(datetime)
  datetime.strftime('%H:%M') unless datetime.blank?
end

然后在表格上:

<%= f.input_field :start_time, :as => :string, :value => time_format(f.object.start_time) %>

希望这会对你有所帮助。

答案 1 :(得分:0)

您可以将attr_accessor添加到模型中(例如formatted_time)并使用此字段获取格式化时间并进行设置。在保存之前,您可以解析@formatted_time的值并将其应用于time_of_event字段。