基本听起来,我不能将date_helper默认为日期,如:
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on, :default => Date.today
= f.buttons
如果资源没有日期,上面只会呈现空白列。
对任何我可能做错的指针表示赞赏。
答案 0 :(得分:7)
您可以在控制器上设置对象本身的默认值
def edit
@resource = Resource.find(params[:id])
@resource.issued_on ||= Date.today
end
答案 1 :(得分:2)
您应该在模型中定义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的情况下直接创建记录,否则不会发生这种情况。
答案 2 :(得分:2)
我们最近在Formtastic中实现了针对all:select,:radio和:check_boxes输入的选择选项,因此它将在下一个补丁版本(0.9.5)或1.0中。在此之前,创建after_initialize或在控制器中设置默认值的建议是很好的建议,但我认为有时候决定默认值的最佳人选是 designer ,他们可能不会对控制器或模型感到舒适,这就是我们将其作为Formtastic DSL的一部分添加的原因。
答案 3 :(得分:0)
您可以将以下内容放入模型文件中
def after_initialize
self.start ||= Date.today
self.token ||= SecureRandom.hex(4)
self.active ||= true
end
以上发布的
@issued_on ||= Date.today
对我不起作用
答案 4 :(得分:0)
我喜欢以下方式
after_initialize :set_issued_on
def set_issued_on
@issued_on||=Date.today
end
比较长,但又漂亮又清晰