あるモデルに紐づくモデルの登録を'form_for'を使って行おうとしたところ、下記エラーが出続けてハマったので対応策をメモφ(..)
ActionView::Template::Error at / undefined method `to_key' for #<Favorite::ActiveRecord_AssociationRelation:0x007fcefaa056b0> Did you mean? to_set to_ary
原因
紐づくモデルの取得をmodel.childmodel.where
で行っていたことが原因。
where
メソッドは、モデルのインスタンスではなく、ActiveRecord::Relation
を返却するため適切にフォームを作成できなった。
修正前のソースコード
<% favorite = page.favorite.where(user_id: current_user.id) %> <%= form_for favorite, method: "delete", class: "form-inline" do |f| %> <%= f.submit "☆" %> <% end %>
解決策
モデルのインスタンスを返却するfind_by
メソッドを使って取得するように変更。
修正後のソースコード
<% favorite = page.favorite.find_by(user_id: current_user.id) %> <%= form_for favorite, method: "delete", class: "form-inline" do |f| %> <%= f.submit "☆" %> <% end %>
参考ページ
Active Record クエリインターフェイス railsguides.jp