2010-06-28 84 views

回答

3

最簡單的方法就是設置重定向。

map.redirect('/games','/')

雖然,你的問題是真的在首位/games路線不應該在那裏。

刪除routes.rb文件底部的catchall路徑,這甚至不會成爲問題。

+1

Jamie建議關於從routes.rb中刪除路由的建議。然後,只要避免將任何代碼鏈接到'/ games'路徑,就可以使用'root_path'輔助方法。 – Karl 2010-06-30 00:57:32

+0

嗨,大家好,所以我有: map.resources:遊戲 map.root,:控制器=> '遊戲',:動作=>「指數 的事情是,我需要顯示,創建新的,破壞了遊戲,但索引應始終是根路徑。 我試過重定向,但我得到這個錯誤: 沒有路由匹配「/」 有沒有辦法map.resources:遊戲,但不是索引? – kineticac 2010-07-04 02:58:55

+0

此外,我需要這個的原因並不是因爲我按照說的方式鏈接到它,而是我有一個來自不同域的永久重定向,當重定向時,將URL作爲domain.com/games而不是根傳遞。如果使用ENV [「RAILS_ENV」]!='development'&& request.env ['HTTP_HOST']!= CURRENT_DOMAIN request.parameters [:host] = CURRENT_DOMAIN perm_redirect_to url_for參數) end – kineticac 2010-07-04 03:02:02

3

我和會話有同樣的問題。我想公開/會話以進行登錄和註銷,但由於無效密碼會將您留在/ sessions,因此我想要一種優雅的方式來處理用戶重新將該URL作爲GET(例如,通過鍵入Ctrl-L)的方式。這爲我工作on Rails的3:

resources :sessions, :only => [:new, :create, :destroy] 
match '/sessions' => redirect('/login') 
match '/login', :to => 'sessions#new' 

我覺得你的代碼會是這個樣子:

resources :games, :only => [:new, :edit, :create, :destroy] 
match '/games' => redirect('/') 
+0

'match'/ games'=> redirect('/'),:via =>:get' – hlcs 2015-10-05 17:27:34

0

由於導軌(3.2.9)的最新版本,我這是怎麼實現的同樣的結果:

MyApp::Application.routes.draw do 
    # ... 
    # declare the redirect first so it isn't caught by the default 
    # resource routing 
    match '/games' => redirect('/') 
    # ... 
    resources :games 
    # ... 
    root :to => 'games#index' 
end 
0

routes.rb

root 'games#index' 

在控制器中:

def index 
    redirect_to root_path if request.env['PATH_INFO'] === '/games' 
    @games = Game.all 
    end