2012-09-18 245 views
1

我的應用程序有用戶在比賽中下注。一次下注稱爲「tipp」。Ruby on Rails - 嵌套表格

我有以下的(工作)的形式,用戶可以編輯他們的賭注:

<%= form_for @user, :url => { :action => "update_tipps" } do |user_form| %> 

    <%= user_form.fields_for :tipps do |tipp_form, index| %> 
     <%= tipp_form.text_field :tipp1 %><br/> 
     <%= tipp_form.text_field :tipp2 %><br/>   
    <% end %> 

    <%= submit_or_cancel(user_form) %> 
<% end %> 

通過這種形式的用戶可以一次編輯所有他的賭注/的竅門的。

我的問題:

我怎麼可以指定哪些用戶可以編輯的竅門?我不希望用戶得到他所有投注的清單,但只是他的一個投注子集。

例如是這樣的:

<%= user_form.fields_for :tipps.where("match_id = ?", 5) do |tipp_form, index| %> 
    <%= tipp_form.text_field :tipp1 %><br/> 
    <%= tipp_form.text_field :tipp2 %><br/>   
<% end %> 

這將減少與5. ID然而,該代碼不工作的匹配的投注到一個賭注。

解決此問題的正確方法是什麼?提前致謝。

回答

1

我沒有馬上測試,但你應該能夠傳遞對象fields_for,博這樣的事情應該工作:

<% user_form.object.tipps.where("match_id = ?", 5).each do |tipp| %> 
    <%= user_form.fields_for :tipps, tipp do |tipp_form, index| %> 
    <%= tipp_form.text_field :tipp1 %><br/> 
    <%= tipp_form.text_field :tipp2 %><br/>   
    <% end %> 
<% end %> 

當然,你應該重構它,因爲過濾像這樣(低級別的搜索方法)在視圖中是難聞的氣味,但最後你有一些東西可以開始玩。

它被描述在http://api.rubyonrails.org,搜索fields_for方法ActionView::Helpers::FormHelper和描述嵌套屬性中的一對多關係的例子。

+0

您的建議有效,謝謝!我會開始玩一下。在接受你的答案之前,我會等一下,看看我能否得到更多的答案。 – marius2k12