Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails正在保存0而不是模型集合中的字符串\u select_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails正在保存0而不是模型集合中的字符串\u select

Ruby on rails Rails正在保存0而不是模型集合中的字符串\u select,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我一直在尝试创建一个基本的rails应用程序。我用generate创建了一个基本的脚手架,我在球员和球队之间建立了一个归属关系,所以球员属于球队,球队有很多球员 我的表单视图如下所示 <%= form_for(@team) do |f| %> <% if @team.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@team.errors.co

我一直在尝试创建一个基本的rails应用程序。我用generate创建了一个基本的脚手架,我在球员和球队之间建立了一个归属关系,所以球员属于球队,球队有很多球员

我的表单视图如下所示

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

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

  <div class="field">
    <%= f.label :Playerone %><br />
    <%= f.collection_select :Playerone, Player.all, :firstname, :firstname %>
  </div>

  <div class="field">
    <%= f.label :Playertwo %><br />
    <%= f.collection_select :Playertwo, Player.all, :firstname, :firstname %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
当我尝试创建一个新团队时,我会得到下拉列表,因为我希望这些下拉列表中包含要选择的球员的名字,但当保存时,它会将0保存为记录

上市团队

Playerone Playertwo 0 0显示编辑销毁

新团队

最初我是这样选择收藏的 这会插入ID,但我希望插入文本

我查阅了大量的文档,并在我还在学习的过程中找到了特朗普


感谢您的帮助:

那么这取决于您的迁移。如果在数据库中创建了整数字段,则保存字符串将保存0

可以将迁移更改为使用字符串而不是整数

您可以使用b,使用id,并通过查找名称来显示名称

f.collection_select :Playertwo, Player.all, :id, :firstname
你可以从playerone和playertwo所在的团队中获取名称

class Team
  belongs_to :playerone, :class_name => "Player"
  belongs_to :playertwo, :class_name => "Player"
end

<%= team.playerone.firstname %>
或者你可以把名字委托给球员

class Team
  belongs_to :playerone, :class_name => "Player"
  belongs_to :playertwo, :class_name => "Player"
  delegate :firstname, :to => :playerone, :prefix => true, :allow_nil => true
  delegate :firstname, :to => :playertwo, :prefix => true, :allow_nil => true
end

<%= team.playerone_firstname %>
或者,您可以使用c语言,它使用一个整数。请查阅文件

我提到我最初有:id,但这将放置玩家的id,而我想要玩家名字的字符串。这可能吗?太棒了!谢谢一群人!最初我有一个整数作为值,然后我将迁移更改为string并执行rake db:reset。很多文档让我有点困惑,因为我是rails的新手。这是一个巨大的帮助。好吧,我改变了我的团队模型,使之看起来像这个类团队Player-belishing\u-to:playertwo,:class_name=>Player end并将我的视图改为使用“`但现在我得到了'团队展示中的命名错误c:/Sites/TWL/app/views/teams/show.html.erb,其中第5行出现了:nil:NilClass'的未定义方法'firstname',有什么想法吗?在前面的回答中,有人告诉我不需要这些关系。我已经找到了文档,你的回答让我找到了正确的方向。再次感谢。