如何根据rails数据库值填充下拉菜单

时间:2015-10-30 15:52:37

标签: ruby-on-rails ruby drop-down-menu

我在轨道上的红宝石上有一个脚手架项目,我在其中填充了玩家和分数。我想有一个由玩家下拉菜单填充的下拉菜单。

过程是,首先在玩家页面上制作一个玩家,然后我进入得分页面,填写一个新的分数,然后下拉菜单将有玩家已经注册,输入分数,然后创建一个与其相关联的分数的新玩家。

(奖金,我想整合这些功能(将球员和得分信息合并为一种形式)

分数表格:

<%= 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而言,这是不切实际的......

任何帮助将不胜感激!如果有任何需要的额外代码来显示我的问题,请告诉我。

1 个答案:

答案 0 :(得分: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了解详情。