2011-11-13 128 views
0

我有一個模型ProductFeature將約定命名爲實例變量?

一個名爲product_feature_controller.rb

我寫我的CRUD的「編輯」的方法對於控制器控制器。在編輯方法中,我創建了一個名爲@productFeature的實例變量,並將其設置爲ProductFeature.find(:id),並將此實例變量發送給我的視圖以供form_for(:product_feature)使用。我發現我的表單不會使用我正在提取的記錄中的當前數據填充其字段。拉了幾個小時之後,我發現我的錯誤完全在我的實例變量中。

它應該被命名爲@product_feature而不是@productFeature。這似乎是一個微不足道的細節,但我真的很想知道爲什麼會這樣。這甚至如何工作?我的意思是Rails如何知道如何根據實例變量的名稱來填充表單?我希望我的問題很明確,只是尋求進一步的薰陶。

回答

1

因爲符號:product_feature(在form_for中)將根據該符號查找實例變量。它不會做任何轉換,並且會尋找變量@product_feature。只要它們匹配,你應該沒問題,但Ruby世界在單詞之間使用下劃線。

此外,模型應該按照慣例命名爲領先資本ProductFeature。我不知道這是否會導致任何問題,但這與規範是相反的。

+0

謝謝先生,相當有幫助。現在爲了清楚起見,我必須將我的符號寫爲':product_feature',以便我的'form_for'標籤找到正確的模型以便正確使用。我不能將我的符號寫成':productFeature',並且解決了這個問題而不創建另一個? –

+0

而且你是正確的,型號名稱的確會導致大寫。我在我的問題中解決了它,謝謝。 –

+0

@ Guided33還沒有嘗試過,但如果模型變量是「@ productFeature」而符號是「@ product_feature」,我期望它能夠工作。很容易嘗試(並報告回!:) –