1

我的应用程序有投注比赛的用户。单次投注称为“tipp”。

我有以下(工作)表格,用户可以在其中编辑他们的赌注:

<%= 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 %>

这会将赌注减少到对 ID 为 5 的比赛的赌注。但是,此代码不起作用。

解决这个问题的正确方法是什么?提前致谢。

4

1 回答 1

1

我现在还没有测试它,但你应该能够将对象传递给fields_for, bo 这样的东西应该可以工作:

<% 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和描述一对多关系。

于 2012-09-18T10:28:41.257 回答