Итак, я столкнулся с этой проблемой с областями маршрутов и form_for: form_for и областями, рельсами 3 а>
Моя проблема еще хуже, поскольку я не просто хочу охватить все методы, я хочу, чтобы все они находились под «/admin», кроме GET/show.
Итак, мой route.rb имеет что-то вроде этого:
scope '/admin' do
resources 'lessons', except: [:show]
end
get "lessons/:id" => "lessons#show", :as => "lesson"
Запуск рейк-маршрутов на самом деле показывает, что я хочу, когда обе версии урока_пути различаются только методом PUT и GET. Итак, решение, которое предлагают другие, где вы делаете что-то вроде этого:
url = @lesson.persisted? ? lesson_path(@lesson) : lessons_path
form_for @lesson, url: url do
У меня это не работает, потому что Lesson_path(@lesson) всегда будет возвращать путь GET, который не имеет префикса /admin, который все еще нарушает мою форму.
Так что я не могу понять, могу ли я указать метод в помощнике пути рельсов, чтобы он использовал маршрут, начинающийся с /admin? Или есть совершенно другой способ добиться этого? Я знаю, что мог бы сдаться и просто устранить неоднозначность, изменив:
get "lessons/:id" => "lessons#show", :as => "lesson"
to
get "lessons/:id" => "lessons#show", :as => "show_lesson"
но на данный момент мне просто любопытно узнать, возможно ли это, и если да, то каков «правильный» способ.