2014-05-11 57 views
1
<%= form_for(@user) do |f| %> 

    <%= f.label :name %> 
    <%= f.text_field :name %> 

    <%= f.label :email %> 
    <%= f.text_field :email %> 

    <%= f.label :password %> 
    <%= f.password_field :password %> 

    <%= f.label :password_confirmation, "Confirmation" %> 
    <%= f.password_field :password_confirmation %> 

    <%= f.submit "Create my account", class: "btn btn-large btn-primary" %> 
<% end %> 

如果將此代碼嵌入到html文檔中,並且請求了html文檔,那麼是form_for只調用一次以返回該頁面的HTML格式?在rails中調用form_for時究竟發生了什麼?

最重要的是,在塊中傳遞什麼f?它的目的是什麼?

編輯:另外,什麼是負責傳遞f

回答

1

好像你是一個新的鐵軌魔術,所以我明白你的問題。

Form_For做了很多事情,在最基本的級別上,它會爲您的Web服務器的RESTful交互生成適當的html。更進一步的是它決定了@user是一個新模型還是一個已經存在的模型。如果它是新模型,它會將請求作爲帖子發送給您的新操作。如果@user已經存在於數據庫中,它會爲您的網頁設置所有正確的事情來對記錄進行更新。

爲了更好地掌握,我建議您查看一下codechool.com rails for zombies,它可能會幫助你很多。或者閱讀http://guides.rubyonrails.org/form_helpers.html

| f |是一個紅寶石塊,它提供了一個表單構建器對象(這是f),然後在表單構建器對象上調用類似.lable或.submit的方法。

表單構建器對象知道你的@user是因爲你傳遞了它,所以它能夠做出關於它是新模型還是當前模型的明智決定。

希望有所幫助。

+0

我確實需要知道'f'是一個表單生成器對象,非常感謝。但是當你運行時,你是否也知道什麼類或對象負責將'f'傳遞給該塊? –

+0

Hey Byron,form_for是由ActionView :: Helpers模塊提供的rails方法。在rails的上下文中,雖然這個類與大多數開發人員無關。我看到它的方式,Rails提供了讓我的生活更輕鬆的模塊,所以我使用它們。當我需要做一些不同的東西時,它提供了什麼(實際上非​​常罕見),我擴展了某些東西或構建了自己的項目。希望這能回答你的問題。 – Austio

0

f變量用於調用標籤,文本字段等幫助方法,併爲該表單提交按鈕。請參閱在瀏覽器中生成的html源代碼。

0

形式塊|f|是表單生成器對象。所以你不需要再一次寫form_for。它被稱爲像文本字段,單選按鈕,標籤,提交按鈕爲該表單的方法。您可以用任何其他字或字符替換f

相關問題