Rails搜索并添加过滤器到搜索 - 地理编码器

时间:2016-08-26 13:12:22

标签: ruby-on-rails ruby ruby-on-rails-3


我想在使用地理编码器的搜索表单上添加过滤器的方法提供一些建议。


我有一个用户模型动物模型(动物有一个Type参数)
加入表 Animal_User Animal_ID / User_ID

现在,我可以找到一个城市周围的用户,可选择该城市周围的公里数。这样做很好。

我想在动物类型上添加过滤器,这将是很棒的:)

搜索看起来像这样:伦敦> 10KM>过滤类型:狗

如果您对如何做到这一点的想法有所了解,请提前多多谢意。你会发现搜索html和控制器。如果您需要用户模型或动物模型,我也可以发布它(它的确是标准的Has_many / has_many虽然关联)

search.html.erb

<div class="search-bar">
<%= form_tag search_path, :class => "webdesigntuts-workshop", method: :get do %>
  <%= label :user, "" %>
  <%= text_field_tag :city, params[:city], placeholder: 'City', :input_html => { :value => 'Paris' } %>

  <%= label :distance, "" %>
  <%= text_field_tag :distance, params[:distance], placeholder: 'km', :input_html => { :value => '10' } %>

  <%= submit_tag "Search" %>
<% end %>
</div>

搜索控制器

class SearchsController < ApplicationController
    def search
    if params[:city].present?
      @searchs = User.near(params[:city], params[:distance] || 10).where("id != ?", current_user.id)
    else
      @searchs = User.all.where("id != ?", current_user.id)
    end
  end

end

1 个答案:

答案 0 :(得分:0)

试试这个,我的基础是Active Record Querying

User.joins(:animals).where(id:  current_user.id, animals: {type: params[:animal_type]}).near(params[:city], params[:distance] || 10)

这假设您的用户模型has_many:animals(能够像这样编写Rails模型DSL很棒)