Сделать url_for сохранить область
В моем приложении Rails мне нужно определить два разных маршрута к некоторым ресурсам. Я пытаюсь использовать scope
иметь ограниченные и незакрытые маршруты. Таким образом я определил:
scope path: '(:prefix)', :prefix => /my/ do
resources :users
end
И теперь мои пользователи могут связаться с /my/users/:id
или /users/:id paths
,
Проблема в том, что мне нужны URL-помощники для предоставления правильных путей в зависимости от того, какой путь я использовал для перехода на страницу. Мне нужна ссылка на /my/users/:id/edit
когда я открываю страницу с помощью /my/users/:id
и ссылка на /users/:id/edit
когда я открою /users/:id
, Что еще более важно, мне нужны правильно работающие формы, которые используют url_for
помощник, чтобы определить правильное действие. Для вышеуказанного конфига url_for @user
генерирует /25/users/25
(когда @user.id == 25
).
Вопрос в том, как сделать url_for
сохранить область, используемую для достижения страницы?
Или, может быть, вы можете предложить другое решение, позволяющее различным URL-адресам достигать некоторых ресурсов и сохранять пути для интуитивной навигации?
1 ответ
Следующее решило проблему на моей стороне:
get '/some_path' => 'controller#action', somevar: 'blah'
scope path: '/my/' do
get '/some_path' => 'controller#action', somevar:'blahblah'
end
Похоже, что если маршруты используют одну и ту же переменную, то url_for использует ее для определения неоднозначности.