Rails的嵌套资源

问题描述:

这里的routes.rb中:Rails的嵌套资源

map.resources :assignments, :shallow => true do |assignment| 
    assignment.resources :problems 
end 

我如何获得url编辑问题(/任务/ XYZ /问题/ ABC /编辑),在代码中?我已经尝试了
edit_assignment_problem_path(作业,问题)
和edit_problem_path(问题)。
虽然第一个在我的本地设置上工作,但在服务器上它说方法edit_assignment_problem_path没有被定义。有任何想法吗?

运行这在你的命令行:

rake routes 

它会告诉你,你已经定义的所有路线,以及它们如何映射。非常便利。

另外检查routing guide,可以教你很多新的东西。

+3

该链接已损坏。路由指南现在可以在http://guides.rubyonrails.org/routing.html找到 – chiborg 2010-10-20 17:27:27

:在Rails 2.2中引入了shallow => true。您的本地设置可能运行的是早期版本,而您的服务器可能运行2.2或更早版本。对于:index,:create和:new操作(因为这些操作需要完整的路径),并且必须使用该路径(例如/ assignments/a/problems/..)短路线(eg/problems/..)用于:edit,:show,:update和:destroy操作。

如果你想所有路线的完全和短版,唯一的可能是使用嵌套的资源路径不浅加上短路线如:

map.resources :assignments, has_many => :problems 
map.resources :problems 

注意,在你的榜样,你也没必要使用map.resources的块形式。