[英]rails date_select
現在,我以mm / dd / yyyy的格式將日期保存為字符串,但是想轉換為date_select,但是由於某種原因,我總是遇到錯誤。
這是我正在使用的代碼
表格
<%= f.date_select :start_date %>
該模型
validates :start_date, :presence => true
但我從控制器收到一個錯誤,說它不適合參數。
這是因為Rails會自動查看數據庫列以弄清楚哪種類型的對象將存儲在其中。 在這種情況下,Rails正在查找要與date_select輔助程序一起使用的Datetime列,但實際上是在查找varchar列。
我將進行遷移以刪除start_date列,然后將其重新添加為datetime列,如下所示
生成新的遷移:
rails generate migration [name of your migration]
在您的情況下,例如:
rails generate migration change_start_date_column_to_timestamp
這將在您的RAILS_ROOT / db / migrations文件夾中生成一個文件,如下所示:
class ChangeStartDateColumnToTimestamp < ActiveRecord::Migration
def self.up
end
def self.down
end
end
並且您需要對其進行修改以使其看起來像:
class ChangeStartDateColumnToTimestamp < ActiveRecord::Migration
def self.up
remove_column :table_name, :start_date
add_column :table_name, :start_date, :timestamp
end
def self.down
remove_column :table_name, :start_date
add_column :table_name, :start_date, :string
end
end
然后,當rails從數據庫中提取數據時,它將自動將它們轉換為Ruby Time對象。
請注意...這將破壞start_date字段中的數據。 因此,如果您有需要保留的預先存在的信息,則需要做一些更復雜的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.