以简单形式设置datetime属性的默认值

时间:2015-11-25 15:18:43

标签: ruby-on-rails datetime simple-form default-value

我想在simple_form中将1448607600(= 2015-11-27 07:00:00 +0000)预分配给名为starts_at的日期时间属性。我做了以下但没有奏效。请帮助!

<%= f.input :starts_at, input_html: { value: Time.at(1448607600) } %>

我也做了以下但没有运气:

<%= f.input :starts_at, input_html: { value: Time.at(1448607600).to_s.to_datetime) } %>

2 个答案:

答案 0 :(得分:1)

如果您在控制器中将默认日期指定为评论中建议的@Mareq会更好,但您也可以使用模型中的回调来执行此操作

假设您有一个名为Resource的模型,在控制器中您可以这样做:

@my_object = Resource.new
@my_object.starts_at = Time.at(1448607600)

或者在模型中你可以拥有:

DEFAULT_TIME = 1448607600.freeze
after_initialize :set_default_time, :if => :new_record?

private
def set_default_time
  self.starts_at = Time.at(DEFAULT_TIME)
end

new视图的两种情况下,您都会遇到这样的情况:

<%= simple_form_for @my_object do |f| %>
  <%= f.input :starts_at %>
<% end %>

答案 1 :(得分:0)

不确定您获得了哪些错误,但DateTime.strptime函数应该为您提供一个有效的DateTime对象,您可以格式化您喜欢的方式

<%= f.input :starts_at, input_html: { value: DateTime.strptime("1448607600",'%s').to_s } %>