J'ai créé un exemple simple pour illustrer un problème que j'ai. Dans cet exemple, j'ai un vaisseau spatial et un pilote. Je veux être en mesure d'affecter un pilote existant au vaisseau spatial lors de la création.Modèle (# ...) attendu, obtenu Chaîne (# ...) erreur lors de l'utilisation de la balise de sélection
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
starships/_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
de hachage
{"name"=>"Nostromo", "pilot"=>"#<Pilot:0x007f85ff547f90>"}
Et je reçois cette erreur
Pilot(#70106745549840) expected, got String(#70106709663840)
Je vois que mon pilote est envoyé comme une chaîne dans le hachage, mais Je ne trouve pas comment je suis supposé le faire autrement.
Vous ne pouvez pas passer un objet au paramètre Hash comme ça. Vous pourriez essayer d'envoyer le 'id 'de cet objet et trouver plus tard que l'objet dans votre destination. –