1
我正在使用ActiveModel
創建一個非模型對象,該對象將與Rails表單構建器一起使用。這是一個Rails 3項目。這裏是我到目前爲止的一個例子:如何處理非模型Rails表單中的日期字段?
class SalesReport
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :promotion_code, :start_date, :end_date
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
我碰巧使用HAML和simple_form,但這並不重要。最終,我只是用標準的Rails日期選擇字段:
= simple_form_for [:admin, @report], as: :report, url: admin_reports_path do |f|
= f.input :promotion_code, label: 'Promo Code'
= f.input :start_date, as: :date
= f.input :end_date, as: :date
= f.button :submit
Rails的分裂了日期字段分成單獨的域,所以在提交表單的時候,實際上是被提交3個日期字段:
{
"report" => {
"start_date(1i)" => "2014",
"start_date(2i)" => "4",
"start_date(3i)" => "1"
}
}
在我SalesReport
對象,我分配PARAMS我attr
方法,但我發現,我沒有start_date(1i)=
方法,我顯然還沒有定義的錯誤。最終,我想結束一個Date
對象,我可以使用它來代替3個單獨的字段。
我應該如何在非模型對象中處理這些日期字段?