複数の Shift オブジェクトを編集する form_tag をまとめようとしています。フォームが適切に作成されており、正しいパラメーターが渡されています。コンソールでオブジェクトを正しく更新すると、パラメーターが機能することを確認しました。ただし、送信ボタンをクリックすると、次のエラーが表示されます。
ActiveRecord::RecordNotFound in ShiftsController#update_individual
Couldn't find Shift without an ID
呼び出しているコントローラーのルートは次のようになります。
map.resources :shifts, :collection => { :update_individual => :put }
ShiftsController のメソッドは次のとおりです。
def update_individual
Shift.update(params[:shifts].keys, params[:shifts].values)
flash[:notice] = "Schedule saved"
end
関連するフォーム パーツは次のとおりです。
<% form_tag( update_individual_shifts_path ) do %>
... (fields for...)
<%= submit_tag "Save" %>
<% end %>
なぜこれが機能しないのですか?「http://localhost:3000/shifts/update_individual/5」(または既存のシフトに対応する任意の番号) の URL を参照すると、パラメーターが設定されていないという適切なエラーが表示されますが、パラメーターを渡すとなんらかの ID がないと、エラーになります。
URL の末尾にある ID の検索を停止するにはどうすればよいですか?