在我的gem文件中,我添加了gem 'subdomain-fu', '1.0.0.beta2'
。然后我做了bundle install
。我试图打印<%= current_subdomain%>但我得到了undefined local variable or method
current_subdomain'。为什么我会收到此错误?
我也重启了我的nginx服务器和独角兽。
答案 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 %>