如何获取Formtastic日期/时间选择的默认值?

时间:2011-02-28 00:06:47

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

我正在使用Formtastic 1.2.3。我希望在加载表单时已选择当前日期和时间。我尝试了很多与:default:selected的组合,但都没有效果。即使从Formtastic的github页面,我也无法获得相关信息。有什么建议?谢谢你的时间!

= form.input :date,:hint => 'Select a date',
             :prompt => {:day => "Day", :month => "Month", :year => "Year"},
             :start_year => Time.now.year
= form.input :time

4 个答案:

答案 0 :(得分:4)

使用after_initialize为表单设置默认值太过苛刻。当空白值可以接受时,情况怎么样?这是控制器的责任,而不是模型。

class ResourceController < ApplicationController
  def new
    # do stuff
    @resource.important_date ||= Time.zone.today
  end
end 

答案 1 :(得分:1)

你的语法看起来没问题,它应该有效(适合我)。您可能需要添加:as =&gt; :日期约束以及以防万一。

form.input :date, :as => :date, :hint => 'Select a date',
         :prompt => {:day => "Day", :month => "Month", :year => "Year"},
         :start_year => Time.now.year

我在Google网上论坛上找到了这个discussion,Justin French在那里讨论了同样的问题。也许这也会有所帮助。

答案 2 :(得分:1)

我通过直接设置活动记录对象中的值来完成此操作:

在模型类中:

def after_initialize
  self.start_time ||= Time.now
end

然后,当显示表单时,它已经填充并正确设置了时间。

答案 3 :(得分:1)

我同意@Jeriko。使用after_initialize只是为了解决问题。如果您无权访问控制器(或不想访问控制器),另一个选择是执行以下操作:

(f.object.received_on = Time.zone.today) unless f.object.received_on.present?

我需要这样做来初始化一个Active Admin表单,我不想访问控制器,绝对不想触摸模型。