2011-07-16 23 views
0

我想爲Ruby on Rails 3創建一個自定義表單元素,並將其打包爲一個gem。我來自PHP(Zend Framework)背景,可以很容易地創建自定義表單元素以在您的應用程序中使用。作爲Ruby on Rails的新手,我不知道如何開始,在哪裏放置我的代碼,以及擴展哪些類。你能指點我正確的方向嗎?這是我想落得代碼:Ruby on Rails 3:如何創建一個自定義的表單元素/表單域輸入法?

<%= form_for(@model) do |f| %> 
    <div class="field"> 
    <%= f.label :field_name %><br /> 
    <%= f.my_custom_element :field_name %> 
    </div> 
<% end %> 

...這會產生一些HTML這樣的:

<div class="field"> 
    <label for="model_field_name">Notes</label><br> 
    <input type="text" name="model[field_name][field1]"> 
    <input type="text" name="model[field_name][field2]"> 
    <input type="text" name="model[field_name][field3]"> 
</div> 

當用戶提交表單..then,會有一些自定義驗證和自定義邏輯,在Rails將數據保存到數據庫之前將這些字段再次拼接到一個字段中。

如何創建此自定義窗體元素來執行此操作? (順便說一句,我一直稱它爲「自定義表單元素」,因爲這就是Zend Framework中所稱的。如果Rails有不同的名稱,請糾正我,以便我可以更輕鬆地查找有關此主題的信息)

回答

0

如果你想驗證和MVC我建議開始尋找到Rails引擎。

http://edgeapi.rubyonrails.org/classes/Rails/Engine.html

+0

其實之後,這是我在做什麼。我甚至安裝了Rails 3.1,所以我可以得到新的插件生成器(rails插件新)。但是,我不知道下一步該怎麼做,因爲我從未創建過自定義表單元素。 – Andrew

0

安德魯,你可以用你自己的助手,這將是gerenate HTML代碼,結果開始。當你感到舒服 ,往前走看到缺省的助手看怎麼樣

 # File actionpack/lib/action_view/helpers/form_tag_helper.rb, line 292 
292:  def check_box_tag(name, value = "1", checked = false, options = {}) 
293:   html_options = { "type" => "checkbox", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys) 
294:   html_options["checked"] = "checked" if checked 
295:   tag :input, html_options 
296:  end 

是潛入source :)

+2

我從來沒有想過在github上查看Rails源代碼。好主意。當你說「從你自己的幫手開始」時,你能詳細闡述一下你的意思嗎?我以前沒有寫過這樣的東西,所以我不知道從哪裏開始。 – Andrew

+1

我決定克隆Rails repo,以便在我的IDE中本地檢查它。我早該這麼做了! – Andrew

相關問題