【问题标题】:Rails--Build a filter on top of geocoder searchRails——在地理编码器搜索之上构建过滤器
【发布时间】:2017-05-21 10:57:15
【问题描述】:

我目前正在使用地理编码器来过滤图像,最重要的是,我想添加一个类别过滤器(不是下拉选择类型,但每个类别都会像按钮一样显示,当我点击它时,它的 category_id 会被选中)。

所以想象一个列出我所有类别的侧边栏和一个位置搜索输入框。

这是我目前所拥有的。

#index.html.erb

<%= form_tag images_path, :method => :get do %>
  <p> Location<br>
    <%= text_field_tag :search, params[:search] %>
    <% submit_tag "Search", :name => nil %>
  </p>
<% end %>

<% @categories.each do |cat| %>
    <%= link_to cat.name %> #then i don't know what to do to get the cat.id link back to the controller
<% end %>

<% @images.each do |image| %> 
  <%= image_tag image.picture.url %>  
<% end %>

I have the location filter form and below that, it lists out the appropriate images.

# imagescontroller

def index
    #@categories = Category.all
    if params[:search].present?
      @users = User.near(params[:search], 50, :select => "users.*, images.*").joins(:images)
      @images = Image.joins(:categories).where(categories: { id: 3 }).joins(:users).merge(@users).distinct
    else
      @images = Image.joins(:categories).where(categories: { id: 3 }) 
    end
 end

正如您在上面的代码中看到的,我将类别硬编码为第三类,但是当我输入位置时代码确实运行成功。

背景故事:

  • 每个图像可以有多个用户,每个用户可以有多个图像。
  • 每个用户都有一个地址,我使用地理编码器查找具有某个位置附近的用户的图像。
  • 每个图像有很多类别,每个类别都有很多图像。
  • 只有五个类别

现在的问题是:如何制作类别表单以便用户可以选择类别,而不是我对其进行硬编码。我希望在不刷新页面的情况下加载页面。而且我对 jQuery 和 Ajax 知之甚少,但我愿意更多地研究它,我确实需要一些方向。

感谢任何解决方案、建议或指导 :)

【问题讨论】:

    标签: jquery ruby-on-rails ruby rubygems


    【解决方案1】:

    我找到了解决方案! 我可以像这样链接视图

    &lt;li&gt;&lt;%= link_to "categoryname1", images_path(category: 'category name", search: params[:search]) %&gt; &lt;/li&gt;

    关键是还要在列表中添加搜索参数

    在图像控制器中,我编辑了代码。 我在控制器中使用 if else 语句来根据不同情况获得不同的结果(即如果搜索和类别参数都存在......)

        category = Category.where('lower(name) = ?', params[:category].downcase).first
        category_id = category.id unless category.nil?
        @images = Image.joins(:categories).where(categories: { id: category_id })

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 2023-02-13
      • 1970-01-01
      • 2013-04-01
      • 2016-08-28
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多