我目前正在执行一个Rails项目,该项目需要将其Passenger Rack Middleware转换为Unicorn。我遇到了一个问题,即独角兽似乎并没有那么多地支持子域,因此我有如下解决方法。
require_relative '../lib/route_scoper'
MyProject::Application.routes.draw do
scope RouteScoper.root do
get "pages/welcome"
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
devise_for :users, controllers: { omniauth_callbacks: "omniauth_callbacks" }
root to: "pages#welcome"
resources :categories, only: [:index, :show]
resources :counties, only: [:index], defaults: { format: :json }
resources :products, only: [:show] do
resources :votes, only: [:create]
end
resources :tickets, only: [:new, :create]
end
end
我根据这里的文章做了一个解决方法
一切正常,除了我们的Facebook登录名似乎存在路由问题。
Started GET "/my_project"
Processing by Devise::CasSessionsController#service as HTML
Redirected to http://events.staging.mainsite/users/auth/facebook
Filter chain halted as :sync_fb_user rendered or redirected
Completed 302 Found in 49.8ms (ActiveRecord: 0.0ms)
Rails项目的域名如下 http://events.staging.mainsite/my_project
它总是将我重定向到http://events.staging.mainsite/users/auth/facebook
页面并显示未找到错误消息404。
它用于从旧版本路由到如下所示的URL
Redirected to /my_project/users/auth/facebook
不知道我是否可以覆盖omniauth路径来解决此问题,或者只是修改route.rb
使其指向正确的登录路径,谢谢您的帮助。
好吧,我刚刚弄清楚了,我必须为我的设计添加一条路径,然后将其移到RouteScoper之外。
devise_for :users, controllers: { omniauth_callbacks: "omniauth_callbacks" }, path: "#{RouteScoper.root}/users"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句