听起来很基本,我不能将 date_helper 默认设置为日期,如下所示:
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on, :default => Date.today
= f.buttons
如果资源没有日期,则上述内容仅呈现空白列。
将不胜感激任何关于我可能做错了什么的指针。
听起来很基本,我不能将 date_helper 默认设置为日期,如下所示:
- semantic_form_for resource do |f|
- f.inputs do
= f.input :issued_on, :default => Date.today
= f.buttons
如果资源没有日期,则上述内容仅呈现空白列。
将不胜感激任何关于我可能做错了什么的指针。
您可以在控制器上设置对象本身的默认值
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
如果您发现没有设置这些字段的记录,这也将防止出现零错误。但是,除非您在没有 ActiveRecord 的情况下直接创建记录,否则不应发生这种情况。
我们最近针对 Formtastic 中的所有 :select、:radio 和 :check_boxes 输入实现了 :selected 选项,因此它将在下一个补丁版本 (0.9.5) 或 1.0 中提供。在那之前,创建 after_initialize 或在控制器中设置默认值的建议是很好的建议,但我确实认为有时决定默认值的最佳人选是设计者,他可能对控制器或模型不满意,这就是我们将其添加为 Formtastic DSL 的一部分的原因。
我喜欢下面的方式
after_initialize :set_issued_on
def set_issued_on
@issued_on||=Date.today
end
有点长,但又好又清晰
您可以在模型文件中添加以下内容
def after_initialize
self.start ||= Date.today
self.token ||= SecureRandom.hex(4)
self.active ||= true
end
以上发出
@issued_on ||= Date.today
对我没用