在子域(Rails路由)下放置许多资源和路径

时间:2015-07-18 00:29:55

标签: ruby-on-rails routes subdomain rails-routing

我想将一堆内容转发到我的rails应用程序(包括嵌套资源)中的子域,而不通过我的所有视图来更新所有link_to _path链接。这可能吗?

修改

到目前为止,我有以下内容。问题是,我可以使用或不使用子域访问所有内容,而不是在我进入或离开应该在子域上的资源时重定向。例如。 example.com/appsconnect.example.com/apps相同,网站根目录可以是example.comconnect.example.com

scope '/' do
 with_options :conditions => {:subdomain => 'connect'} do |site|

  site.resources :contracts
  site.resources :bills
  site.resources :feedbacks
  site.resources :newsletters
  site.resources :contacts
  site.resources :apps do
    site.resources :elements, controller: 'apps/elements' do
      site.resources :features, except: [:index], controller: 'apps/elements/features' do
        member do
          site.post 'complete'
        end
      end
    end
    site.resources :comments, controller: 'comments'
    site.resources :bills, controller: 'bills'
    site.resources :contracts, controller: 'contracts'

    end
  end
end

编辑2

config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
     r307 %r{/apps/(.*)}, 'http://connect.localhost:3000/apps/$1'
end

1 个答案:

答案 0 :(得分:2)

https://github.com/jtrupiano/rack-rewrite会让你这样做。它是与Web服务器无关的,所以你在heroku上并不重要。

例如

config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
  r307 %r{/apps/(.*)}, 'http://connect.example.com/apps/$1'
end

会针对/ apps /的请求发出重定向,以转到connect.example.com/apps /