0

我正在使用设计。我正在更新一组日志条目。

我的路线看起来像:

  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 或者更动态地添加。他们击中了练习控制器,我被迫以一种骇人听闻的方式设置 user_id,如下所示:

params[:exercise][:log_entries_attributes].each do |value|
  value[1].merge!(:user_id => current_user.id)
end

我想要做的是点击 log_entries 控制器,所以我不必执行上述操作。使这个棘手的是正确地通过集合。

4

1 回答 1

3

可能你不见了

new_user_exercise_log_entry(@user,@exercises)

对于嵌套资源,你不能称之为普通new_user_exercise_log_entry()

=== 更新 ===

:url => user_exercise_log_entries_path(current_user, ew.exercise)

应该

:url => user_exercise_path(current_user, ew.exercise)

于 2012-08-18T00:01:57.463 回答