formtastic中date_helper的默认值

听起来很基本,我不能将date_helper默认为日期,如:

- semantic_form_for resource do |f| - f.inputs do = f.input :issued_on, :default => Date.today = f.buttons 

如果资源没有日期,上面只会呈现空白列。

希望任何关于我可能做错的指针。

我们最近在Formtastic上实现了一个:选择选项:select,:radio和:check_boxes输入,因此它将在下一个补丁版本(0.9.5)或1.0中。 在此之前,创建after_initialize或在控制器中设置默认值的建议是很好的建议,但我认为有时候决定默认值的最佳人选是设计师 ,他可能对控制器或模型不熟悉,这就是我们将此作为Formtastic DSL的一部分添加的原因。

您可以在控制器上设置对象本身的默认值

 def edit @resource = Resource.find(params[:id]) @resource.issued_on ||= Date.today end 

您应该在模型中定义after_initialize。 如果在模型中定义了after_initialize方法,它将被调用为new,create,find以及生成模型实例的任何其他方法的回调。

理想情况下,您需要像这样定义它:

 class resource < ActiveRecord::Base def after_initialize @issued_on ||= Date.today end ... end 

然后您的视图将如下所示:

 - semantic_form_for resource do |f| - f.inputs do = f.input :issued_on = f.buttons 

如果您发现没有设置这些字段的记录,这也可以防止出现nil错误。 但是,除非您在没有ActiveRecord的情况下直接创建记录,否则不会发生这种情况。

您可以将以下内容放入模型文件中

 def after_initialize self.start ||= Date.today self.token ||= SecureRandom.hex(4) self.active ||= true end 

以上发布

 @issued_on ||= Date.today 

没有为我工作

我喜欢以下方式

 after_initialize :set_issued_on def set_issued_on @issued_on||=Date.today end 

有点长,但很好,很清楚