到目前为止,我们已经在我们的应用程序上设置了用户搜索,仅基于文本内容查询。
所以这就是我所拥有的:
在models / user.rb中
def self.search(query)
where("description ilike ?", "%#{query}%")
end
在app / controllers / users_controller.rb中
class UsersController < ApplicationController
before_action :authorized?
def index
@users = User.all
if params[:search]
@users = User.search(params[:search]).order("created_at DESC")
else
@users = User.all.order('created_at DESC')
end
end
在views / index.html.erb中
<%= form_tag(users_path, :method => "get", id: "search-form") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Users" %>
<%= submit_tag "Search", :name => nil %>
<% end %>
我们正在使用rails和postgres。已安装Geocoder gem。我们将当前的纬度和经度存储在单独的列中。
如何添加邻近搜索过滤器,以及在MVC方面要采取哪些步骤?
位置像这样存储在我们的方案中
create_table "users", force: :cascade do |t|
t.float "latitude"
t.float "longitude"
知道了。我将用户控制器上的索引功能修改为
if params[:search]
@users = User.search(params[:search]) \
.near([current_user.latitude, current_user.longitude], 10) \
.order("created_at DESC")
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句