所以我就遇到了这个问题范围的路线和的form_for:form_for and scopes, rails 3我如何重写Rail Route Helper中的方法(PUT vs GET)?
我的问题更糟糕的是,虽然因为我不只想范围内的所有方法,我想大家是在除了GET“/管理员” /节目。
所以我的routes.rb有这样的事情:
scope '/admin' do
resources 'lessons', except: [:show]
end
get "lessons/:id" => "lessons#show", :as => "lesson"
运行rake路线事实上确实表现出我想要的东西,其中lesson_path的只是方法不同的两个版本,PUT VS GET。因此,解决办法他人提供,你做这样的事情:
url = @lesson.persisted? ? lesson_path(@lesson) : lessons_path
form_for @lesson, url: url do
对我不起作用,因为lesson_path(@lesson)将始终返回不具有仍打破了/管理前缀GET路径我形成。
所以我不明白的是,我可以在rails路径助手中指定方法,以便它将使用以/ admin开头的路径吗?还是有一种完全不同的方式来解决这个问题?我知道我可以山洞,只是通过改变歧义:
get "lessons/:id" => "lessons#show", :as => "lesson"
到
get "lessons/:id" => "lessons#show", :as => "show_lesson"
但在这一点上,我只是想知道,如果它是可能的,如果是的话什么是“正确的”办法。
顺便说一句,我目前通过简单的前缀,我用“/管理员”这绝对是一个糟糕的解决办法手动生成的PUT案件的网址有这方面的工作。 – eagspoo