2010-05-24 55 views
2


林學習軌道,探索了一下從書本,並創建具有爲提高我的知識添加功能的簡單應用。即時通訊編寫一個簡單的博客應用程序,我有一個名爲添加日期的表單中的字段,我不希望這是一個字段,我希望它從服務器獲取日期並自動將其放入數據庫。我將如何去做這件事?我正在考慮一個隱藏的領域,但不確定如何處理日期並將其插入隱藏的領域。這是錯誤的做事方式嗎?
由於事先
院長在軌當前日期形成

回答

6

我不會用一個隱藏字段,因爲即使它被隱藏在用戶可以操縱這一點。我認爲,解決這個問題的最好辦法是,忽略形式的日期和時間正確保存對象之前添加到您的控制器操作模型:

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 

但是你沒有做任何這一點,因爲軌道上的紅寶石提供了兩列created_atupdated_at。當對象被創建時將會設置created_at,並且每次更新此對象時都會設置updated_at

+0

是當對象被添加到數據庫中的updated_at設置?正如我想知道如果我可以只是改變我的看法,以update_at命令? – Dean 2010-05-24 10:31:37

+0

是,當對象被添加到數據庫'updated_at'相同'created_at' – jigfox 2010-05-24 10:37:35

0

在Rails中,如果你給模型的屬性賦予某些名字,那麼ActiveRecord會給它們特殊的行爲。有四種不同的日期/時間相關的:

  • created_on:被自動設置爲記錄的創建
  • created_at日期:被自動設置爲日期和記錄的創建
  • updated_on時間:被自動設置爲記錄被更新
  • updated_at日期:被自動設置爲記錄被更新
的日期和時間210

通常,created_at/updated_at對得到自動由t.timestamps聲明在添加到模型該模型的相關ActiveRecord Migration

1

這裏是一個形式的顯示當前日期的視圖(新):

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

    <p> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </p> 
    <p><b>date</b><br/> 
    <%= f.datetime_select :date %> 
    </p> 
    <p> 
    <%= f.label :instructions %><br /> 
    <%= f.text_area :instructions %> 
    </p> 
    <p> 
    <%= f.submit 'Create' %> 
    </p> 
<% 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