ruby-on-rails – Rails:如何为不需要:id参数但需要2个查询参
发布时间:2020-12-17 07:09:45 所属栏目:百科 来源:网络整理
导读:我有一个列表表,列表模型和listing_controller类.我写了一个方法,需要2个参数:纬度和经度.然后它检索围绕该坐标约5公里的列表.在listing_controller中,这是我写的方法: def around lat = params[:latitude] long = params[:longitude] @surroundings = Lis
我有一个列表表,列表模型和listing_controller类.我写了一个方法,需要2个参数:纬度和经度.然后它检索围绕该坐标约5公里的列表.在listing_controller中,这是我写的方法:
def around lat = params[:latitude] long = params[:longitude] @surroundings = Listing.where("latitude = ? and longitude = ?",lat,long) end 我想要做的是在我的routes.rb文件中设置一个url,当客户端浏览器调用时,它将提供纬度和经度作为2个参数. No:id参数可以提供,因为客户端浏览器不知道id,而且数据库中可能没有任何与坐标完全匹配的条目.记住我只想搜索特定坐标周围的列表. 那么如何在路线文件中写这个呢? 这是我的“rake routes”命令的输出 listings / listings#index GET /listings(.:format) listings#index POST /listings(.:format) listings#create new_listing GET /listings/new(.:format) listings#new edit_listing GET /listings/:id/edit(.:format) listings#edit listing GET /listings/:id(.:format) listings#show PUT /listings/:id(.:format) listings#update DELETE /listings/:id(.:format) listings#destroy /:controller(/:action(/:id))(.:format) :controller#:action 这就是我的routes.rb文件的样子: Businesses::Application.routes.draw do root to: 'listings#index',as: 'listings' resources :listings match ':controller(/:action(/:id))(.:format)' 这是我希望用作客户端浏览器的url字符串: http://localhost:3000/listings/around?latitude=XXX&longitude=XXXX 任何帮助,将不胜感激 解决方法
你已经掌握了大部分内容,唯一的问题是如何生成实际的URL.我看到它的方式你有2个选择:
>只需使用您已有的路径: listings_path( :latitude => lat,:longitude => lng ) 这将起作用并生成像/ listings?latitude = XXX& longitude = XXX这样的路径 # routes.rb resources :listings do collection do get :around end end 然后你可以像这样制作你的网址: around_listings_path( :latitude => lat,:longitude => lng ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |