Deviseを使用しています。ログエントリのコレクションを更新しています。
私のルートは次のようになります:
devise_for :users
resources :users do
resources :exercises do
resources :log_entries
end
end
私もフォームを手に入れましたStarted PUT "/users/1/exercises/1/log_entries"
次に、次のエラーが発生しました。
Routing Error
No route matches [PUT] "/users/1/exercises/1/log_entries"
編集:問題が何であるかわかります。log_entriesのコレクションを更新しようとしています。つまり、POSTではなくPUTをヒットしています。Railsにはコレクションを配置する方法がないため、これを解決する方法がわかりません。
x2を編集:これを実行しようとしている理由は、現在、これを実行するフォームがあるためです。
= semantic_form_for [current_user, ew.exercise] do |exercise|
フォームの中にはlog_entriesのコレクションがあります。5つあるとしましょう。
次に、各log_entryを更新するか、さらに動的に追加します。彼らはexercise_controllerにヒットし、私はuser_idを次のようにハック的な方法で設定することを余儀なくされました。
params[:exercise][:log_entries_attributes].each do |value|
value[1].merge!(:user_id => current_user.id)
end
私がやりたいのはlog_entriesコントローラーを押すことなので、上記を行う必要はありません。これをトリッキーにするのは、コレクションを適切に処理することです。