subdomain-fu无法在rails 4中工作

时间:2015-10-15 10:14:38

标签: ruby-on-rails ruby subdomain-fu

在我的gem文件中,我添加了gem 'subdomain-fu', '1.0.0.beta2'。然后我做了bundle install。我试图打印<%= current_subdomain%>但我得到了undefined local variable or method current_subdomain'。为什么我会收到此错误?

我也重启了我的nginx服务器和独角兽。

2 个答案:

答案 0 :(得分:2)

你不需要宝石来在Rails中添加sudomains。

以下是我在其中一个应用中添加的一些代码。

routes.rb添加以下内容:

constraints subdomain: false do
  root to: 'landings#index'
end

constraints subdomain: 'my' do
  get '/', to: 'users#show', as: 'app_root'

  resources :users
  resources :games do
    collection do
      get :search, to: 'games#search', as: :search
    end
  end
end

以下内容给了我:

                root GET    /                                                              landings#index
            app_root GET    /                                                              users#show {:subdomain=>"my"}
               users GET    /users(.:format)                                               users#index {:subdomain=>"my"}
                     POST   /users(.:format)                                               users#create {:subdomain=>"my"}
            new_user GET    /users/new(.:format)                                           users#new {:subdomain=>"my"}
           edit_user GET    /users/:id/edit(.:format)                                      users#edit {:subdomain=>"my"}
                user GET    /users/:id(.:format)                                           users#show {:subdomain=>"my"}
                     PATCH  /users/:id(.:format)                                           users#update {:subdomain=>"my"}
                     PUT    /users/:id(.:format)                                           users#update {:subdomain=>"my"}
                     DELETE /users/:id(.:format)                                           users#destroy {:subdomain=>"my"}
        search_games GET    /games/search(.:format)                                        games#search {:subdomain=>"my"}
               games GET    /games(.:format)                                               games#index {:subdomain=>"my"}
                     POST   /games(.:format)                                               games#create {:subdomain=>"my"}
            new_game GET    /games/new(.:format)                                           games#new {:subdomain=>"my"}
           edit_game GET    /games/:id/edit(.:format)                                      games#edit {:subdomain=>"my"}
                game GET    /games/:id(.:format)                                           games#show {:subdomain=>"my"}
                     PATCH  /games/:id(.:format)                                           games#update {:subdomain=>"my"}
                     PUT    /games/:id(.:format)                                           games#update {:subdomain=>"my"}
                     DELETE /games/:id(.:format)                                           games#destroy {:subdomain=>"my"}

使用此方法的问题是,对于子域路由,您必须使用search_games_path(subdomain: 'mysubdomainname')search_games_url (which automatically points to your subdomain)

答案 1 :(得分:0)

Rails 4内置了功能,因此您不需要使用旧的宝石,例如subdomain_fu。

要获取rails 4中的当前子域,只需执行以下操作:

<%= request.subdomain %>