我想以如下形式添加当前日期。我不知道如何。友善的帮助
<div class = "form-group">
<div class="control-label col-sm-2">
<%= form.label :date_submitted, class: "required" %>
</div>
<div class="col-sm-8">
<%= form.date_field :date_submitted, Date.today, required: true, readonly: true %>
</div>
</div>
答案 0 :(得分:0)
我不确定这是否理想,但是如果您必须以表单的形式提供它,也许在控制器中设置它更有意义>
class SomeController < ApplicationController
def edit
@modelname = Modelname.find(params[:id])
@modelname.date_submitted = Time.now
end
end
鉴于表单可以在将来的某个时间/日期提交,我不希望您在表单中进行设置,因为日期/时间可能会过时/过时。相反,我会这样在创建/更新中捕获它:
class SomeController < ApplicationController
def update
@modelname = Modelname.find(params[:id])
@modelname.update(modelname_params.merge({ date_submitted: Time.now }))
end
private
def modelname_params
params.required(:modelname).permit(:fieldname)
end
end
答案 1 :(得分:0)
您可以为date_field
添加一个值:
<%= form.date_field :date_submitted, value: Date.today %>
如果您在“新建”和“编辑”之间共享表单,则可以添加条件以显示默认值(Date.today)或记录的日期:
<%= form.date_field :date_submitted, value: (Date.today if @my_object.new_record?) %>
答案 2 :(得分:0)
Rails 5已经实现了一个不错的属性API(ActiveRecord::Attributes::ClassMethods#attribute
,因此,如果您想要date_submitted
的默认值,它将像
class SomeModel < ApplicationRecord
attribute :date_submitted, :datetime, default: -> {Time.now}
end
现在,当在对象上调用date_submitted
方法时(例如,通过表单生成器),它将显示调用该方法的当前日期/时间。
由于这只是默认值,如果在实例化过程中提供了不同的值,例如SomeModel.new(date_submitted: "2018-06-19")
,则该值将优先于所提供的默认值。
这么说是因为您已经决定date_submitted
是必需的并且是只读的,并且您正在设置此值,如果在模型上使用time_stamps,那么做类似
class SomeModel < ApplicationRecord
def date_submitted
self.created_at.to_date #for just a Date
end
end
由于created_at
时间戳将始终表示创建对象的时间,在这种情况下,该时间戳似乎与date_submitted
相同。