フォームで参照する必要がある多対多のリレーションシップを持つネームスペースリソースで動作するようにform_forを取得できない場合があります。form_for多対多リレーションシップを持つ名前空間付き
ストレッチは多くの身体領域に影響を及ぼし、身体領域は多くのストレッチを持つことができます。ここで
は、リソースです:
namespace :admin do
resources :stretches, only: [:new, :create, :edit, :update, :destroy]
resources :body_areas, only: [:new, :create]
end
は、ここでのform_forです:
<%= form_for [:admin, @stretch, @body_area] do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :body_area_id %>
<%= f.collection_select :body_area_id, BodyArea.all, :id, :name, prompt: 'Select a Body Area' %>
<%= f.submit %>
<% end %>
そして、私のコントローラ:
def new
@stretch = Stretch.new
@body_area = BodyArea.all
end
私は取得していますエラーは次のとおりです。
ActionView::Template::Error:
undefined method `to_key' for #<ActiveRecord::Relation [#<BodyArea id: 1, name: "Legs 1">]>
誰かが私を助ける提案はありますか?あなたの時間の前にありがとう!
私は新しいBodyAreaを作成しようとしていません。私は身体領域のリストを参照して、このストレッチが属する領域を選択したいと考えています。私のform_forのパラメータに@body_areaが含まれていないと、私のフォームはドロップダウンメニューで何を話しているのか分かりません。 –
@KristenSqueeMueller 'collection_select'に' BodyArea.all'があるので、それは分かります。あなたは '@body_area = BodyArea.new'を無用に削除することができます – Pavan