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
它会告诉你,你已经定义的所有路线,以及它们如何映射。非常便利。
答
:在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的块形式。
该链接已损坏。路由指南现在可以在http://guides.rubyonrails.org/routing.html找到 – chiborg 2010-10-20 17:27:27