Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails formtastic中日期\u助手的默认值_Ruby On Rails_Formtastic - Fatal编程技术网

Ruby on rails formtastic中日期\u助手的默认值

Ruby on rails formtastic中日期\u助手的默认值,ruby-on-rails,formtastic,Ruby On Rails,Formtastic,听起来很基本,但我不能将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(pa

听起来很基本,但我不能将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方法,则会将其作为对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中的所有:选择、:收音机和:复选框输入实现了一个:选择选项,因此它将在下一个补丁版本(0.9.5)或1.0中出现。在此之前,建议在控制器中创建一个after_initialize或设置默认值是一个很好的建议,但是我确实认为,有时决定默认值的最佳人选是设计师,他们可能对控制器或模型不满意,这就是为什么我们将其作为Formtastic DSL的一部分添加的原因。

您可以在模型文件中添加以下内容

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

稍长一点,但很清晰

+1,比我快了几分钟。我认为这种方式是最好的做法。移动默认为控制器,gracias。
:selected
选项现在是,所以我们很快就会回到原点。