3

我正在使用 Formtastic 1.2.3。我希望在加载表单时已经选择了当前日期和时间。我尝试了许多与:defaultor的组合: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

4 回答 4

5

使用after_initialize为表单设置默认值太笨拙了。可以接受空白值的情况如何?这是控制器的责任,而不是模型的责任。

class ResourceController < ApplicationController
  def new
    # do stuff
    @resource.important_date ||= Time.zone.today
  end
end 
于 2013-11-19T23:58:32.847 回答
1

你的语法看起来不错,它应该可以工作(对我有用)。您可能还想添加 :as => :date 约束以防万一。

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

我在 Google Groups 上找到了这个讨论,Justin French 也在其中讨论了这个问题。也许这也会有所帮助。

于 2011-02-28T08:41:46.120 回答
1

我通过在创建活动记录对象时直接设置它的值来做到这一点,如下所示:

在模型类中:

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

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

于 2012-04-26T21:33:43.933 回答
1

我同意@Jeriko。使用after_initialize只是自找麻烦。如果您无权访问控制器(或不想访问它),另一种选择是执行以下操作:

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

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

于 2014-08-25T23:14:12.440 回答