jeudi 6 août 2015

Rails Subdomain for nested resources

I've got a Rails 4 app that I'm trying to reconfigure to use subdomains for jobportals. Right now the root path for each portal is /jobportals/:id. What I want is for a user to be able to go to client.example.com and hit that root path. Then for example, if the user edits their profile, the url would be http://ift.tt/1IZfbTu rather than http://ift.tt/1T7fECu.

I followed this ASCIIcasts tutorial on setting up subdomain routing, but it's not working for me. When I go to http://ift.tt/1T7fGKr, I am hitting the root_path of my Rails app, rather than the root_path for the portal.

I think the problem is that Constraints(Subdomain) isn't working with resources :jobportals. How can I reconfigure my routes to accomplish what I'm after?

MyApp::Application.routes.draw do
    devise_for :users, :controllers => {:registrations => "registrations"}
    root 'general#home'

    get '/about' => 'general#about'
    get '/team' => 'general#team'
    get '/careers' => 'general#careers'
    get '/terms' => 'general#terms'
    get '/privacy_policy' => 'general#privacy_policy'

    constraints(Subdomain) do
        resources :jobportals, controller: 'portals/general' do
            member do
                root 'portals/general#home'
                devise_scope :user do
                    get '/user/sign_in' => 'portals/sessions#new'
                    post '/user/sign_in' => 'portals/sessions#create'
                    delete '/user/sign_out' => 'portals/sessions#destroy'
                    post '/user/password' => 'portals/passwords#create'
                    get '/user/password/new' => 'portals/passwords#new'
                    get '/user/password/edit' => 'portals/passwords#edit'
                    patch '/user/password' => 'portals/passwords#update'
                    put '/user/password' => 'portals/passwords#update'

                    post '/user' => 'portals/registrations#create'
                    get '/user/sign_up' => 'portals/registrations#new'
                    get '/user/edit' => 'portals/registrations#edit'
                    patch '/user' => 'portals/registrations#update'
                    put '/user' => 'portals/registrations#update'
                    delete '/user' => 'portals/registrations#destroy'
                end

                get '/jobs' => 'portals/general#jobs'
                get '/companies' => 'portals/general#companies'
                get '/alljobs' => 'portals/general#alljobs'

                resources :applications, controller: 'portals/applications'

                get ':id' => 'portals/companies#profile'
                get ':id/jobs' => 'portals/companies#jobs'
                get ':id/jobfunctions' => 'portals/companies#jobfunctions'
            end
        end
    end
end

Aucun commentaire:

Enregistrer un commentaire