1

特定の形式 (seo の目的) に適合するリンクを実装しようとしています。

例を次に示します。

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

都市と州ごとに場所が変わる場所。

追加のモデルなどを作成せずに、ルート ファイル内の都市と州の配列 (定義済み) を動的にループする方法はありますか?

4

1 に答える 1

3

ルートにパラメーターを含めることができるため、次のようなものが機能するはずです。

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

そして、 のlocationコントローラ アクションに送信する必要がありますparams[: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
于 2012-04-17T17:07:38.867 に答える