2011-03-23 77 views
0

我正在嘗試創建一個應用程序評分。由於我是StackOverflow的新手,我無法上傳屏幕截圖,但這裏是截屏鏈接多種形式的一個提交按鈕

  1. Now it looks like this
  2. This is what I want it to be
  3. 以下是涉及視圖的模型。只需點擊下一張圖片= Photostream中的最後一張圖片(再次StackOverflow將不允許發佈超過3個超鏈接)。

上述這種觀點是從:本地主機/比賽日/ 4 /匹配/新

的關係是這樣的:

  1. 甲比賽日的has_many匹配。
  2. 一場比賽has_many比賽(最多3場,但現在我們將堅持1場)。我們將更新分數屬性。
  3. 遊戲has_many對(最多2個)。

我的問題是:

  1. 你如何代碼在MatchesController(擊中時啓動用戶)創建有2對的比賽,每一對都有自己的得分(這是一個屬性在遊戲模式中)?

  2. 如何在視圖中循環添加屬於Match的其他遊戲(Score屬性)和Pair表單(本例中爲Match 10)?就像在上面的屏幕截圖2中一樣。

匹配控制器:

def new 
    @matchday = Matchday.last 
    @match = Match.new() 
    @match.number = match_numbering 
    @pairs = Pair.all 
    @matchday.best_of.times { @match.games.build } 
    end 

    def create 
    @match = Match.new(params[:match]) 
    @matchday = Matchday.last 
    @match.number = match_numbering 
    if @match.save 
     @matchday.matches << @match 
     flash[:success] = "Match recorded" 
     redirect_to matchdays_path 
    else 
     @title = "Record Match" 
     render 'new' 
    end  
    end 

/視圖/火柴/新:

<h1>Match <%= @match.number %> of Matchday <%= @matchday.number %> details</h1> 

<%= form_for @match, :url => {:action => 'create', :id => @match.id } do |p| %> 
    <%= render 'shared/error_messages', :object => p.object %> 

    <%= render :partial => 'match_form', :locals => {:p => p} %> 

    <% for game in @match.games %> 
     <%= fields_for :games, game do |game_form| %> 
      <p> 
       Score: <%= game_form.text_field :score, :size => 2 %>    
      </p> 
      <p> 
       Pair: <%= select(@pairs, :pair_id,Pair.all.collect{|p| [p.name]}) %> 
      </p> 
     <% end %> 
    <% end %> 

    <div class = "action_links"> 
     <p> <%= link_to "Cancel", matchdays_path, :class => "cancel" %> | 
      <%= p.submit "Start" %></p> 
    </div> 
<% end %> 

我認爲循環必須放一些地方在for循環,但不知道如何執行它。再加上我fields_for並選擇表單可能會是不正確的......可以學到很多東西:)

回答

0

我所要做的就是這一行添加到Match.rb

has_many :games 
accepts_nested_attributes_for :games, :allow_destroy => true