我正在寻找实现适合某种格式的链接(seo 目的)。
这是一个例子:
match '/activities-Palmdale-California', :to => 'explores#activity_by_city', :location=>'Palmdale-California'
每个城市+州的位置发生变化。
有没有办法在路线文件中动态循环遍历一系列城市和州(预定义),而无需创建其他模型等?
我正在寻找实现适合某种格式的链接(seo 目的)。
这是一个例子:
match '/activities-Palmdale-California', :to => 'explores#activity_by_city', :location=>'Palmdale-California'
每个城市+州的位置发生变化。
有没有办法在路线文件中动态循环遍历一系列城市和州(预定义),而无需创建其他模型等?
您可以在路线中包含参数,因此应该可以使用以下内容:
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