2015-10-30 129 views
0

我有一個紅寶石腳手架項目,在軌道上填充了玩家和分數。我希望有一個由玩家下拉菜單填充的下拉菜單。如何填充基於rails數據庫值的下拉菜單

這個過程是,首先在玩家頁面上製作一個玩家,然後我進入分數頁面,填寫一個新分數,然後下拉菜單中已經有玩家註冊,輸入分數,然後創建一個與其相關的分數的新玩家。對於分數

(獎金,我想信息集成這些功能(結合的球員,比分變成一種形式)

形式:

<%= form_for(@score) do |f| %> 
    <% if @score.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@score.errors.count, "error") %> prohibited this score from being saved:</h2> 

     <ul> 
     <% @score.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :lowest_time %><br> 
    <%= f.number_field :lowest_time %> 
    </div> 
    <div class="field"> 
    <%= f.label :player_id %><br> 
    <%= f.text_field :player_id %> 
    <%= @score.player %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

形式爲玩家

<%= form_for(@player) do |f| %> 
    <% if @player.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@player.errors.count, "error") %> prohibited this player from being saved:</h2> 

     <ul> 
     <% @player.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

我has_many有一個玩家模型:得分和belongs_to的得分模型:玩家

我現在的方式是玩家ID顯示,但這是不實際的用戶將不得不輸入ID_number的球員...

任何幫助,將不勝感激!如果有任何需要的附加代碼來顯示我的問題,請告訴我。

+0

您需要在播放器模型中使用'accepts_nested_attributes_for:score'。以下是更多信息:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html .. https://github.com/nathanvda/cocoon .. http://railscasts.com/episodes/196-嵌套模型外形部分-1 – Vlad

回答

0

在你scores形式,而不是輸入的玩家ID,使用Rails的select幫手:

<div class="field"> 
    <%= f.label :player_id %><br> 
    <%= f.select(:player_id, Player.all.pluck(:name, :id), @score.player_id %> 
</div> 

退房的Rails docs更多信息。