2012-01-20 105 views
0

我試圖建立一些半靜態的頁面在Rails 3應用程序, 我創建了一個頁面控制器與一些非寧靜行動軌道3重定向缺少URL根

class PagesController < ApplicationController 

    def home 
    end 
    def about 
    end 
    def contact 
    end 
    def monday 
    end 
    def saturday 
    end 
    def sunday 
    end 

end 

它顯示的頁面以及在網頁/星期一等...或/星期一等...如果我設置的路線是rails 3 removing controller name form url

但我只是想知道是否有可能重定向到/缺少的網址。根據exampel我有/星期一設置,但如果一個使用URL和輸入/星期二它不會打一頁。我可以重定向這種行爲嗎?

== ==編輯

我有我的代碼改成這樣:

resources :pages, :path => '/' do 
    collection do 
     # # match 'tuesday' => redirect('/') 
     # # match 'wednesday' => redirect('/') 
     # # match 'friday' => redirect('/') 
     %w{home monday thursday saturday sunday about contact resources}.each do |url| 
     get url 
     end 
    end 
end 
match 'pages/*page' => :root 

URL重寫工作正常通過數組循環。 我試着把我的根文件底部的wild cardline放在資源頁面塊的底部。但是我收到了「無法找到控制器操作顯示」的消息。

match 'pages/*page' => :root 

這是正確的地方,以防止像/星期二錯誤的網址生成錯誤頁面? 是否也可以將此重定向僅限於幾個操作而不是所有缺少的頁面?僅限星期二,星期三,星期五...

回答

2

您可以使用通配符路由來執行此操作。在你的routes.rb月底剛剛添加一行:

match '*page' => :root 

和缺頁將重定向使用參數以root [:頁面]設置爲請求的URL。

如果你想只重定向缺少在頁面控制器的頁面,這樣做反而

match 'pages/*page' => :root 

你可以閱讀更多關於路由here。通配符路由在文章結尾附近解釋。

希望這有助於!

+0

嘗試過,但沒有把它放在最後。認爲它會被其他聲明覆蓋。 –

2

得到它的工作

我改變了通配符線

match '*page' => redirect('/') 

代替=>:根和資源範圍內離開它:網頁中屏蔽。

+0

這表示,可能會限制重定向到只有幾個網址,又名/星期二,/星期五... –