2012-04-17 9 views
0

特定のフォーマットに適合するリンクを実装しようとしています(SEO目的)。配列からの経路の一致 - Railsルーティング

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]であなたのコントローラのアクションに送信する必要があります。

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

かで:あなたはあなたのアプリケーションがあらかじめ定義された配列のちょうど場所に受け入れるURLを制限したい場合は、:constraintsオプションを持つルートのいずれかでそれを行うことができ、(我々はそれValidLocationsを呼ぶことにします)コントローラ:

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

ここで、シンプルな配列の中にコントローラのすべての都市と州をリストする方法はありますか? –

+0

あなたは何を意味するのか分かりません。送信された 'location'があらかじめ定義された配列内にあるかどうかをチェックしますか? – tsherif

+0

私は私の答えに少しを追加しました。それが役に立ったら教えてください。 – tsherif

関連する問題