所以我用范围路由和form_for遇到了这个问题:form_for和范围,rails 3
我的问题更糟,因为我不只是想限定所有方法,我希望所有方法都在“/admin”下,除了 GET/show。
所以我的 routes.rb 有这样的东西:
scope '/admin' do
resources 'lessons', except: [:show]
end
get "lessons/:id" => "lessons#show", :as => "lesson"
运行 rake routes 实际上确实显示了我想要的,其中两个版本的课程路径仅在方法上有所不同,PUT 与 GET。因此,其他人提供的解决方案在您执行以下操作时提供:
url = @lesson.persisted? ? lesson_path(@lesson) : lessons_path
form_for @lesson, url: url do
对我不起作用,因为 course_path(@lesson) 将始终返回没有 /admin 前缀的 GET 路径,这仍然会破坏我的表单。
所以我想不通的是,我可以在 rails path helper 中指定方法,以便它使用以 /admin 开头的路由吗?还是有完全不同的方法来解决这个问题?我知道我可以通过更改来消除歧义并消除歧义:
get "lessons/:id" => "lessons#show", :as => "lesson"
至
get "lessons/:id" => "lessons#show", :as => "show_lesson"
但在这一点上,我只是想知道这是否可能,如果是的话,什么是“正确”的方式。