1

这是模型的结构routes.rb

  resources :model_a do
    resources :model_b do
      resources :model_c do
        resources :photos do
          collection do
            get :upload_data
          end
        end
      ...
    ...
  ...

在网址上

http://localhost:3001/model_a/1/model_b/2/model_c/3/photos/upload_data

显示用于选择文件的表格。它在被调用的控制器Photos和 actionupload_data中。

我收到错误消息

#<#:...> 的未定义方法 `photos_path'

我认为这是因为这个控制器在另一个控制器里面,但是如何修复它呢?

4

2 回答 2

2

通常,注意Rails Doc中的警告是明智的

资源的嵌套深度不应超过 1 级。

这是基于深度嵌套资源导致不必要的复杂性的经验的指南。

您描述的错误听起来像是由于在您的视图表单中使用了不正确的路径助手。由于它是嵌套的,因此它不是photos_path,而是所有嵌套资源的组合,例如:

model_a_model_b_model_c_upload_data_photos_path(model_a, model_b, model_c)

您应该检查rake routes用于路径的正确且笨拙的路线。

于 2013-04-09T13:45:33.567 回答
0

可能这可以解决您的问题: http: //guides.rubyonrails.org/routing.html#nested-resources

这里有一个注释:"Resources should never be nested more than 1 level deep."

正如您提到的代码,您已经使用了不止 1 个级别。我不认为这是一个好习惯。

希望这会对你有所帮助。

于 2013-04-09T13:41:42.687 回答