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
有点长,但很好,很清楚