【发布时间】:2020-01-27 09:44:24
【问题描述】:
我尝试修改 rails 应用程序中的现有路线,使其对人类和谷歌更具可读性。
现有路由示例:http://localhost:3000/search_adv?locale=de&q[home_type_eq]=1
收件人:http://localhost:3000/bowling?locale=de
如何在不修改“大”代码的情况下创建这些路由?
其中 home_type=1 参数对应保龄球。 home_type=2 到餐厅等等。 总共有六个这样的参数。
在 routes.rb 中:get 'search_adv' => 'pages#search_adv'
在控制器中:
def search_adv
if params[:search_adv].present? && params[:search_adv].strip != ""
session[:loc_search] = params[:search_adv]
end
if session[:loc_search] && session[:loc_search] != ""
@rooms_address = Room.where(active: true).paginate(page: params[:page], per_page: 10).near(session[:loc_search], 1000, order: 'distance')
else
@rooms_address = Room.where(active: true).paginate(page: params[:page], per_page: 10)
end
【问题讨论】:
-
我建议您从阅读the rails documentation on default route parameters 开始。您似乎想定义六个自定义路由,并指定一个默认查询参数。
-
如果您无法从文档中弄清楚,那么也许可以分享您的尝试——也许我们可以改进文档,让未来的开发人员(例如您自己)更清楚地完成这项任务?
-
您应该包括创建它们所来自的页面的
html.erb文件,以及所生成页面的实际相关html。
标签: ruby-on-rails ruby routes