这是routes.rb:
map.resources :assignments, :shallow => true do |assignment|
assignment.resources :problems
end
如何在代码中获取编辑问题的URL(/ assignments / xyz / problems / abc / edit)?我试过了两个
edit_assignment_problem_path(分配问题)
和edit_problem_path(问题)。
虽然第一个适用于我的本地设置,但在服务器上它表示没有定义edit_assignment_problem_path方法。有什么想法吗?
答案 0 :(得分:11)
在命令行运行:
rake routes
它会告诉您已定义的所有路线以及它们的映射方式。非常方便。
答案 1 :(得分:2)
:浅=>在Rails 2.2中引入了true。您的本地设置可能正在运行早期版本,而您的服务器可能运行2.2或更早版本。
对于浅路由,您必须指定完整路由(例如/ assignments / a / problems / ..):index,:create和:new actions(因为这些操作需要完整路径)并且必须使用short route(例如/ problems / ..):edit,:show,:update和:destroy actions。
如果你想要所有路由的完整版本和短版本,唯一的可能是使用没有浅层和短路径的嵌套资源路由,例如:
map.resources :assignments, has_many => :problems
map.resources :problems
请注意,在您的示例中,您不需要使用map.resources的块表单。
答案 2 :(得分:1)
同时查看可以教你很多新事物的routing guide。