Объект рельсов, ожидаемый полученная строка
86
10
Я видел несколько вопросов, подобных этому, но никто не работал у меня.
У меня есть модель команды:
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
Любые идеи, пожалуйста?
спросил(а)
2013-03-27T23:00:00+04:00
7 лет, 11 месяцев назад
добавить комментарий
пожаловаться
Решение
113
Наконец, это сработало:
<%= f.collection_select :p1_id, Player.all, :id, :name %>
Вот волшебство:
Моя миграция имеет t.references p1 и создает столбец p1_id в базе данных.
Когда форма отправлена, рельсы ищут, чтобы заполнить идентификатор ссылки:
def create
@team = Team.new(params[:team])
.....
end
ответил(а)
2013-03-28T00:59:00+04:00
7 лет, 11 месяцев назад
добавить комментарий
пожаловаться
43
Попробуйте следующее:
<%= f.collection_select :player_id, Player.all, :id, :name %>
ответил(а)
2013-03-27T23:06:00+04:00
7 лет, 11 месяцев назад
добавить комментарий
пожаловаться
43
Я мог ошибаться, но думаю, что вместо
<%= f.collection_select :p1, Player.all, :id, :name %>
вам нужно
<%= f.collection_select :p1, :team_id, Player.all, :id, :name %>
ответил(а)
2013-03-27T23:06:00+04:00
7 лет, 11 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ