我正在使用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
答案 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表单,我不想访问控制器,绝对不想触摸模型。