结合搜索和标记的Rails

时间:2015-10-15 08:56:08

标签: ruby-on-rails acts-as-taggable-on

我正在使用地图应用,我想要一个功能,用户可以通过输入关键字并同时点击标签进行搜索。这应该显示该区域周围具有该标签的所有用户。这是它的外观:

user_controller.rb

  def index
    if params[:search].present?
      @users = User.near(params[:search], 10, units: :mi)
    elsif params[:tag].present?
      @users = User.tagged_with(params[:tag], :match_all => true)
    else
      @users = User.all
    end
  end

index.html.erb

<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search" %>

<div id="tag_cloud">
  <% tag_cloud User.tag_counts_on(:tags).order("name ASC"), %w[s m l] do |tag, css_class| %>
  <%= link_to tag.name, tag_path(tag:(tag.name), class: css_class) %>
</div>

1 个答案:

答案 0 :(得分:0)

由于您的问题缺乏实际问题,因此不确定您的需求,但为什么不简单地将您的请求链接起来呢?即:

def index
  @users = User.all 
  @users = @users.near(params[:search], 10, units: :mi) if params[:search].present?
  @users = @users.tagged_with(params[:tag], :match_all => true) if params[:tag].present?
end