Ich rüstete ein einfaches Beispiel, um ein Problem zu veranschaulichen, das ich habe. In diesem Beispiel habe ich ein Raumschiff und einen Piloten. Ich möchte dem Raumschiff bei der Erstellung einen vorhandenen Piloten zuweisen können.Model (# ...) erwartet, bekam String (# ...) Fehler bei der Verwendung von Select-Tag
starship.rb
class Starship < ApplicationRecord
has_one :pilot
validates :name, presence: true
end
pilot.rb
class Pilot < ApplicationRecord
belongs_to :starship, optional: true
validates :name, presence: true
end
Raumschiffen/_form.html.erb
<div class="field">
<%= f.label :pilot %>
<%= f.select :pilot, Pilot.all %>
</div>
starships_controller.rb
def starship_params
params.require(:starship).permit(:name, :pilot)
end
params Hash
{"name"=>"Nostromo", "pilot"=>"#<Pilot:0x007f85ff547f90>"}
Und ich bekomme diese Fehlermeldung
Pilot(#70106745549840) expected, got String(#70106709663840)
ich sehe, dass mein Pilot als String in der Hash gesendet wird, aber Ich finde nicht, wie ich es anders machen soll.
10 Sie können ein Objekt nicht so an den params-Hash übergeben. Sie könnten versuchen, die ID dieses Objekts zu senden und später das Objekt in Ihrem Ziel zu finden. –