【发布时间】:2014-09-16 17:08:50
【问题描述】:
我正在将旧应用程序从 rails 3.0 升级到 rails 4.1,并且在设置设计和omniauth 的路线时遇到问题。目前的路线如下所示:
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
devise_for :users, controllers: {
omniauth_callbacks: "users/omniauth_callbacks"
}
当我运行它时,我收到以下错误:
Devise does not support scoping omniauth callbacks under a dynamic segment (RuntimeError)
and you have set "/(:locale)/users". You can work around by passing
`skip: :omniauth_callbacks` and manually defining the routes. Here is an example:
match "/users/auth/:provider",
constraints: { provider: /google|facebook/ },
to: "devise/omniauth_callbacks#passthru",
as: :omniauth_authorize,
via: [:get, :post]
match "/users/auth/:action/callback",
constraints: { action: /google|facebook/ },
to: "devise/omniauth_callbacks",
as: :omniauth_callback,
via: [:get, :post]
我尝试了多种方式手动定义路由,但是当我运行测试时,我的路由都不起作用。有谁知道用 devise_for 处理这些动态段的正确方法吗?
【问题讨论】:
标签: ruby-on-rails-3 ruby-on-rails-4 devise routes omniauth