我正在使用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集合。所以它击中了PUT而不是POST。我不知道如何解决这个问题,因为Rails没有提供PUT集合的方法。
编辑x2:我尝试这样做的原因是因为我目前有一个表单可以执行此操作:
= semantic_form_for [current_user, ew.exercise] do |exercise|
表单内部是log_entries的集合。假设有5个。
现在我更新每个log_entry或动态添加更多内容。他们点击了exercise_controller,我被迫以一种hackish的方式设置user_id,如下所示:
params[:exercise][:log_entries_attributes].each do |value|
value[1].merge!(:user_id => current_user.id)
end
我想要做的是点击log_entries控制器,所以我不必执行上述操作。让这件事变得棘手的是正确地进行了收集。
答案 0 :(得分:3)
可能你错过了
new_user_exercise_log_entry(@user,@exercises)
对于嵌套资源,您无法调用普通new_user_exercise_log_entry()
=== update ===
:url => user_exercise_log_entries_path(current_user,ew.exercise)
应该是
:url => user_exercise_path(current_user,ew.exercise)