2012-04-17 36 views
0

我希望實現適合特定格式(seo目的)的鏈接。從陣列中匹配路由 - 導軌路由

Here`s一個例子:

match '/activities-Palmdale-California', :to => 'explores#activity_by_city', :location=>'Palmdale-California' 

如果每個城市+狀態的位置變化。

有沒有我的方式動態循環通過城市數組&狀態(預定義)在路線文件中,而不創建額外的模型等?

回答

1

你可以有參數,你的路線,所以像下面應該工作:

match "/activities-:location", :to => 'explores#activity_by_city' 

locationparams[:location]發送到您的控制器動作。如果你想限制你的申請將接受只是一個預定義的陣列位置的URL(我們把它叫做ValidLocations),你可以做到這一點無論是在與:constraints路由選項:

match "/activities-:location", :to => 'explores#activity_by_city', :constraints => proc { |req| ValidLocations.include?(req.params[:location]) } 

或控制器:

def activity_by_city 
    ... 
    unless ValidLocations.include?(params[:location]) 
    flash[:error] = "Invalid location." 
    redirect_to ... 
    return 
    end 
    ... 
end 
+0

好吧,但現在如何列出控制器中的所有城市和州,如果有一個簡單的數組? – 2012-04-17 19:09:43

+0

我不確定你的意思。你想檢查發送的位置是否在預定義數組中? – tsherif 2012-04-17 19:41:30

+0

我加了一點到我的答案。讓我知道它是否有幫助。 – tsherif 2012-04-17 20:00:30