我在我的路線文件中的根路徑:在軌道路線重定向控制器行動到根?
root 'games#index'
的問題是,如果有人去:http://domain.com/games它不顯示根,因此,我們要創建兩個URL在同一頁。
有沒有辦法將http://domain.com/games改成http://domain.com?
如果在路徑文件夾中有一個很好的方法,我寧願不要在應用程序控制器中擺弄before_filter
。
謝謝!
我在我的路線文件中的根路徑:在軌道路線重定向控制器行動到根?
root 'games#index'
的問題是,如果有人去:http://domain.com/games它不顯示根,因此,我們要創建兩個URL在同一頁。
有沒有辦法將http://domain.com/games改成http://domain.com?
如果在路徑文件夾中有一個很好的方法,我寧願不要在應用程序控制器中擺弄before_filter
。
謝謝!
最簡單的方法就是設置重定向。
map.redirect('/games','/')
雖然,你的問題是真的在首位/games
路線不應該在那裏。
刪除routes.rb
文件底部的catchall路徑,這甚至不會成爲問題。
我和會話有同樣的問題。我想公開/會話以進行登錄和註銷,但由於無效密碼會將您留在/ 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('/')
'match'/ games'=> redirect('/'),:via =>:get' – hlcs 2015-10-05 17:27:34
由於導軌(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
routes.rb
:
root 'games#index'
在控制器中:
def index
redirect_to root_path if request.env['PATH_INFO'] === '/games'
@games = Game.all
end
Jamie建議關於從routes.rb中刪除路由的建議。然後,只要避免將任何代碼鏈接到'/ games'路徑,就可以使用'root_path'輔助方法。 – Karl 2010-06-30 00:57:32
嗨,大家好,所以我有: map.resources:遊戲 map.root,:控制器=> '遊戲',:動作=>「指數 的事情是,我需要顯示,創建新的,破壞了遊戲,但索引應始終是根路徑。 我試過重定向,但我得到這個錯誤: 沒有路由匹配「/」 有沒有辦法map.resources:遊戲,但不是索引? – kineticac 2010-07-04 02:58:55
此外,我需要這個的原因並不是因爲我按照說的方式鏈接到它,而是我有一個來自不同域的永久重定向,當重定向時,將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