以铁轨forms的当前日期

我正在学习轨道,并从书中探索一下,并创建一个带有附加function的简单应用程序,因为我增加了我的知识。 我正在写一个简单的博客应用程序,我有一个名为date添加的表单中的字段,我不希望这是一个字段,我希望它从服务器获取日期并自动将其放入数据库。 我该怎么做呢? 我在考虑一个隐藏的领域,但不确定如何处理日期并将其插入隐藏的字段。 这是不正确的做事方式吗?
提前致谢,
院长

我不会使用隐藏字段,因为即使它被隐藏,用户也可以操纵它。 我认为解决此问题的最佳方法是,在保存对象之前,忽略表单中的日期并在控制器操作中向您的模型添加日期:

def SomeController #... def create @model = Model.new params[:model] @model.date_field_name = Time.now if @model.save # whatever should be done if validation passes or redirect_to @model else # whatever should be done if validation fails or render :new end end #... end 

但是您不必执行任何操作,因为ruby on rails提供了两列created_atupdated_at 。 创建对象时将设置created_at每次更新此对象时都会设置updated_at

这是显示当前日期的表单的视图(新):

 <% form_for(@recipe) do |f| %> <%= f.error_messages %> 

<%= f.label :title %>
<%= f.text_field :title %>

date
<%= f.datetime_select :date %>

<%= f.label :instructions %>
<%= f.text_area :instructions %>

<%= f.submit 'Create' %>

<% end %> <%= link_to 'Back', recipes_path %>

和控制器:

 def new @recipe = Recipe.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @recipe } end end 

在Rails中,如果您为模型属性指定某些名称,则ActiveRecord会为它们提供特殊行为。 有四种不同的日期/时间相关:

  • created_on :自动设置为创建记录的日期
  • created_at :自动设置为创建记录的日期和时间
  • updated_on :自动设置为记录更新的日期
  • updated_at :自动设置为记录更新的日期和时间

通常, created_at / updated_at对通过模型关联的ActiveRecord Migration中的t.timestamps声明自动添加到模型中。