加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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这样的路径
>如果你想要/ listings / around?…版本,你可以像这样添加:

# routes.rb
resources :listings do
  collection do
    get :around
  end
end

然后你可以像这样制作你的网址:

around_listings_path( :latitude => lat,:longitude => lng )

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读