2009-06-01 126 views
7

我正在開展一個有周期性事件的項目。因此,我以非傳統方式使用多個DateTime字段。我正在做的是一個FormBuilder,它創建一個輸出一個工作日選擇和一個選擇時間的字段。我使用的是12小時的插件,我在網上找到,使作品:Rails Formbuilder問題

class ActionView::Helpers::FormBuilder 
    def dow_time(dow,time,options={}) 
    rval = select(dow, DateTime::DAYNAMES) 
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true}) 
    end 
end 

我遇到的問題是,平日選擇實際上並沒有一個默認選擇的值。這在我的創建頁面上正常工作,但不在編輯頁面上。 dow是引用調用模型中字段星期幾爲「星期一」,「星期二」等的字段的符號。如何使用dow從調用模型中抽取該值。

self[dow] 

不起作用,因爲這是不同的類。

任何想法?有些不同?

回答

13

如果你是一個FormBuilder裏面,那麼你可以簡單地使用「對象」變量訪問當前對象。

例:

在:edit.html.erb

<% form_for(@event) do |form| %> 
    <%= form.custom_datetime_select(:event_starts_at) %> 
<% end %> 

在你FormBuilder

def custom_datetime_select(field, options = {}) 
    start_time = object.send(field) 
    ... 
end 

兩個objectobject_name是你,當你調用form_for設置。

查看actionpack/lib/action_view/helpers/form_helper.rb瞭解更多詳情。

0

這應該爲你工作...

class ActionView::Helpers::FormBuilder 
    def dow_time(dow_model, time, options={}) 
    rval = select(dowmodel, :dow, DateTime::DAYNAMES) 
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true}) 
    end 
end 
+0

self.read_attribute失敗: 未定義的方法`read_attribute」爲#<::的ActionView ::幫手FormBuilder:0xb6729f3c> 「modelinstance」 不起作用,因爲該模型是可變的,也許我誤解了什麼你在說。 – 2009-06-01 04:22:08

+0

我編輯了代碼。調用它:<%= dow_time(@mymodel,time等...)%> – 2009-06-01 10:40:34