私は問題を説明する簡単な例を足場にしました。 この例では、私はStarshipとパイロットを持っています。私は創造時に宇宙船に既存のパイロットを割り当てることができるようにしたい。選択タグを使用しているときにモデル(#...)が予想されました。ストリング(#...)エラー
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
宇宙船/ _form.html.erb
<div class="field">
<%= f.label :pilot %>
<%= f.select :pilot, Pilot.all %>
</div>
{"name"=>"Nostromo", "pilot"=>"#<Pilot:0x007f85ff547f90>"}
ハッシュstarships_controller.rb
def starship_params
params.require(:starship).permit(:name, :pilot)
end
のparamsそして私は、私は私のパイロットがハッシュ内の文字列として送信されていることがわかり
Pilot(#70106745549840) expected, got String(#70106709663840)
このエラーが出るが、私はそれがそうでなければどうやってやろうとしているのか分かりません。
そのようなparamsハッシュにオブジェクトを渡すことはできません。あなたはそのオブジェクトの 'id'を送信して、後であなたの目的地にあるオブジェクトを見つけることができます。 –