'player_id', :validate => tr-6ren">
gpt4 book ai didi

ruby-on-rails - rails 对象预期得到字符串

转载 作者:行者123 更新时间:2023-12-04 07:36:10 27 4
gpt4 key购买 nike

我见过多个与此类似的问题,但没有一个对我有用。

我有一个团队模型:

class Team < ActiveRecord::Base
has_one :p1, :class_name => "Player", :foreign_key => 'player_id', :validate => true
has_one :p2, :class_name => "Player", :foreign_key => 'player_id', :validate => true
end

在我团队的 _form.html.erb 中,我将玩家称为
  <%= f.collection_select :p1, Player.all, :id, :name %>

但是,在提交表单时,我看到错误:
Player(#28401456) expected, got String(#14111904)

Application Trace | Framework Trace | Full Trace
app/controllers/teams_controller.rb:47:in `new'
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"GSIcEvROFnvgGWT4HvE2VNqRw4NxU1J8iAw/WhZeRLk=",
"team"=>{"p1"=>"1"},
"commit"=>"Create Team"}

这是行中的代码
def create
@team = Team.new(params[:team])
.....
end

请问有什么想法吗?

最佳答案

最后,这有效:

 <%= f.collection_select :p1_id, Player.all, :id, :name %>

这是魔法:
我的迁移有 t.references p1 并在数据库中创建了一列 p1_id 。
提交表单后,rails 会在以下位置填写引用的 id:
def create
@team = Team.new(params[:team])
.....
end

关于ruby-on-rails - rails 对象预期得到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com