2011-07-01 47 views
3

我想通過我的表單中的數據庫中的數據進行循環。我想要處理的數據放在標籤和文本框中。我怎麼能在軌道上做到這一點?我是否會使用一個.each塊在表單中循環?我在我的數據庫中擁有它的原因是因爲我的客戶希望能夠自己添加表單字段數據。Rails通過表單域中的數據循環訪問


例如這裏是我想要做的:

<%= form_for :order do |f| %> 
    @fields.each do |field| 
    <%= f.label field.name %> 
    <%= f.text_field field.name %> 
    <% end %> 
    <%= f.submit %> 
<% end %> 

什麼來完成這樣的事情的最好方法?

請不要用railscast :)回答事先

感謝

+1

Railscast是你可以學習「如何捕魚」一個有用的資源。如果你只是就這個問題提問,而有人「讓你釣魚」,那麼你並沒有真正學到什麼,只是暫時解決了一個問題。作爲回報,這種方法將比使用railscasts或書籍學習軌道消耗更多的時間。 – user482594

+0

@Jake - 如果它解決了你的問題,「接受」答案通常被認爲是一種很好的形式,你可以通過點擊答案左邊的「打勾」來實現。:) –

+0

+1對RailsCast無反應。他們是一個很好的資源,但他們應該只用於增加額外的資源到答案的結尾,而不是答案本身。 – Sia

回答

2

是的,這會工作,但你錯過了兩行結束腳本標籤:

<%= form_for :order do |f| %> 
    <% @fields.each do |field| %> 
     <%= f.label field.name %> 
     <%= f.text_field field.name %> 
    <% end %> 
    <%= f.submit %> 
<% end %> 

如果您需要比標籤/文本字段對更復雜的東西 - 然後您可以使用部分模板並使用關鍵字集合:

<!-- in 'order.html.erb' --> 
<%= form_for :order do |f| %> 
    <!-- note: each 'field' is auto-populated from the collection/partial-name, but you need to pass the form in as a local --> 
    <%= render :partial => 'field', :collection => @fields, :locals => {:f => f} %> 
    <%= f.submit %> 
<% end %> 

<!-- in '_field.html.erb' --> 
<%= f.label field.name %> 
<%= f.text_field field.name %> 
<!-- and whatever else you want to do... --> 

更多的部分呈現在這裏:http://api.rubyonrails.org/classes/ActionView/Partials.html

+0

而不是使用本地人可以使用一個對象嗎? – Jake

+0

不確定你的意思? –