我在我的项目中使用了Devise,我最初在2013年使用API Version 1(api / v1 /)启动了它。我没有必要创建版本2(api / v2 /),而且我在解决如何为设计创建新的v2路由时遇到问题。
/ api / v1 /和/ api / v2 /都指向相同的用户模型,但我让它们通过不同的控制器。目前以下是我正在尝试的内容,但我收到消息"无效的路线名称,已在使用中:' new_user_session'"。
/ api / v1 /
的范围路由scope '/api' do
scope '/v1' do
devise_for :users, :controllers => {:registrations => "devise/v1/users_registrations",
:sessions => "devise/v1/users_sessions",
:passwords => "devise/v1/users_passwords"}
end
end
/ api / v2 /
的范围路由scope '/api' do
scope '/v2' do
devise_for :users, :controllers => {:registrations => "devise/v2/users_registrations",
:sessions => "devise/v2/users_sessions",
:passwords => "devise/v2users_passwords"}
end
非常感谢任何和所有帮助。谢谢
答案 0 :(得分:1)
您需要同时使用namespace
或代替范围。
现在这些范围将更改文件本身的位置,但不会更新实际的路径名,因此您将收到重复的错误。
即
scope :api do
namespace :v1 do
devise_for :users, controllers: {registrations: "devise/v1/users_registrations",
sessions: "devise/v1/users_sessions",
passwords: "devise/v1/users_passwords"}
end
end
scope :api do
namespace :v2 do
devise_for :users, controllers: {registrations: "devise/v2/users_registrations",
sessions: "devise/v2/users_sessions",
passwords: "devise/v2/users_passwords"}
end
end
然后您的路线将是new_v1_user_session
和new_v2_user_session
等等......