tech-sjh

2008年7月25日 星期五

contagion 好強阿~~

今天繼續在 RoR 堆裡打滾時,遇到另一個問題
是我的物件資料儲存後,物件的屬性卻都沒有
抓到。

於是我先到 view 的 html form 檢查,看是不是
有語法上的問題,使用 firebug 檢視過後看到產
生出來的 html 是正確的 form 語法。

接著回去看 controller 裡面相對應的 action, 是
不是有正確寫入,因為一直都沒有成功寫入資
料庫,只看到 mysql 裡一筆跟 form 表格裡預
設資料不同值的 record.

找了半天實在找不到原因,只好向強者 contagion
求救,沒想到 contagion 翻了兩下 screen 視窗
就找到問題,也順便教我一些 ActiveRecord 幫
我們儲存的屬性資料,存不到資料的原因就是
是我自己加的 accessor 把原本 ActiveRecord 會
幫 model 加的 attribute methods override!

因為我加的 accessor 並沒有定義,造成在
controller assign 值的敘述都變成無效。

另外也講了一些 form_for 比 form_tag 多做了
物件所有屬性的 hash mapping, 可以讓我們直
接在 controller 使用 object.update_attribute!
直接給 params[:object] 參數就可以更新在
form_for 所取到的新屬性了。

在 debug 過程中也看到加 debugger 敘述再到
mongrel_rails irb 可以直接檢察 runtime 的各
項資訊。除了 ruby -cw command line 靜態檢
查語法之外,debugger 才是 runtime 的好工
具。

contagion 太強了~~

1 則留言:

版權宣告、免責聲明


姓名標示、非商業性、相同方式分享3.0台灣授權條款授權。
免責聲明: 本文所載資料僅供參考,並不構成投資建議,
讀者閱讀或使用該資料所導致結果需要自擔風險與責任,
作者概不承擔閱讀人行為之任何風險與責任。
除非有特別宣稱,作者言論並不代表所屬任何團體、公司、或其他人意見。