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 回答