2012-07-29 39 views
0

我對自己的好奇心有一個(簡單的)問題: 我想知道Rails如何預先填寫表單,例如...您知道,當某些模型屬性出現驗證錯誤時,您可以執行一些操作如「渲染:編輯」,並且該表單是魔術預填充的。Rails如何預填表單?

Rails使用什麼機制來做這樣的事情?我沒有設法找到關於這個主題的任何文件,我想了解這個魔術。

所以,如果有人能給我一些關於這個問題的解釋,我很樂意閱讀!

謝謝!

[編輯]還有一個附屬問題:當一個模型繼承另一個模型(STI)時,我們是否需要做一些特別的預填表單?

回答

1

你大多采用這種風格的form_for幫手:

<%= form_for @person do |f| %> 
    <!-- Some more stuff here --> 

    <%= f.text_field :first_name %><br /> 

    <!-- Some more stuff here --> 
<% end %> 

這essentiall確實是什麼,它生成一個充滿了@person.first_name.to_s值的文本字段。發生錯誤時,@person.first_name將填充錯誤值。如果你創建一個人(@person = Person.new),那麼@person.first_name.to_s""

因此,rails只是用屬性值填充文本字段。

f順便提一下是一個軌道FormBuilder。它的方法記錄在here,如果你想仔細看看來源。

+0

非常感謝!所以如果我正確地理解了源代碼,這個方法:「submit_default_value」是預填表單的那個,對嗎?那麼單表繼承又如何呢?在提交子模型失敗後,Rails是否需要填寫表單? – Kulgar 2012-07-30 09:51:07