2012-12-22 75 views
2

我有一個應用程序,用於爲多個員工計劃工作班次。我有一個Shift模型,在那裏我存儲shiftstartshiftend作爲Time對象。對時間對象進行編輯

我在一個表格中顯示幾天的頁面上顯示用戶Shifts。這個想法是,用戶可以使用Best In Place寶石直接在該表中編輯shiftstartshiftend

但是我似乎無法弄清楚如何在處理Time對象時得到這個工作 - 任何人都可以在這方面獲得一些經驗或建議。

我有以下代碼:

VIEW:

<% @myShifts.where(:shiftdate => date).order(:shiftstart).each do |shift| %> 
    <div class="shift-item span"> 
    <div class="hider"> 
     <p> 
     <i class="icon gear"></i> 
      <%= best_in_place shift.shiftstart.strftime("%H.%M"), :type => :input %> - <%= best_in_place shift.shiftend.strftime("%H.%M"), :type => :input %> 
     </p> 
    </div> 
    </div> 
<% end %> 

SCHEMA:

create_table "shifts", :force => true do |t| 
    t.time  "shiftstart" 
    t.time  "shiftend" 
    t.integer "type_id" 
    t.integer "user_id" 
    t.string "note" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.date  "shiftdate" 
end 

我得到一個「未定義的方法`{:類型=>:輸入} '爲「08.00」:字符串「錯誤,我已經嘗試切換到最好的地方類型輸入的東西 - 沒有幫助..

回答

4

best_in_place方法需要兩個強制參數;一個對象(在你的情況下爲shift)和一個字段(shiftstartshiftend),然後是可選的選項散列(:type => :input)。所以,你的代碼需要是這樣的:

<%= best_in_place shift, :shiftstart, :type => :input, :display_with => Proc.new { |f| f.strftime("%H.%M") } %> 
+0

這給了我一個錯誤:未定義的方法'shift_path」爲#<#<類別:0x007fe659934800>:0x007fe653ce4460> ..任何想法? – Twiddr

+0

也許你沒有使用'ShiftsController'來處理輪班的動作。您可以將您的實際移位路徑(處理PUT請求的路徑)提供給''best_in_place''選項,如下所示::path => your_shift_path(shift)'。或者你可以提供你的'rake routes'以獲得更多的見解:)。 –

+0

發現問題..我的路線不正確..但你的解決方案似乎工作..只是完美.. :) – Twiddr