搜索将搜索结果显示为所有产品Rails App

时间:2016-06-24 12:20:03

标签: ruby-on-rails ruby search

我一直在为这个我正在构建的应用程序搜索表单来学习Rails。

它应该搜索产品,但是当我在搜索字段中输入一些产品名称时,它会为我提供所有产品的列表。解决方案可能很简单,但我还没弄明白,我感到非常沮丧。

我尝试将@products更改为其他名称但不起作用。

有人可以检查一下并告诉我吗?

提前谢谢 d

在我的_navbar中,代码是

<%= form_tag search_products_path, class: 'navbar-form navbar-right' do %>
  <%= search_field_tag class: 'form-control', :id => 'searchbar',  :placeholder =>'Search', :name => "query" %>
  <%= submit_tag "Submit", class: 'btn btn-default', :name => nil %>
<% end %>

在我的观看次数/产品/ search.html.erb

<table class="table table-hover">
   <thead>
     <tr>
      <th>Name</th>
      <th>Description</th>
      <th>Designer</th>
      <th>Price</th>
      <th>Stock</th>
      <th>Image</th>

    </tr>
  </thead>

 <tbody>
  <% @products.each do |product| %>

  <tr>
    <td><%= link_to product.name, product %></td>
    <td><%= product.description %></td>
    <td><%= product.designer.designer_name %></td>

    <td><%= number_to_currency product.price %></td>
    <td><%= product.stock_quantity %></td>

    <td><%= image_tag product.image.thumb %></td>


 <% end %>
</tr>
</tbody>

在我的product.rb模型中我有这段代码

 class Product < ActiveRecord::Base


     mount_uploader :image, ImageUploader

     validates_presence_of :name, :price, :stock_quantity
     validates_numericality_of :price, :stock_quantity

     belongs_to :designer
     belongs_to :category
     belongs_to :page

    def self.search(query)
      where("name LIKE ? OR description LIKE ?", "%#{query}%", "%#{query}%") 
    end


  end

在products_controller.rb中我有这段代码

 def search
    @products = Product.search(params[:query])
    @categories = Category.joins(:products).where(:products => {:id => @products.map{|x| x.id }}).distinct

 end

1 个答案:

答案 0 :(得分:0)

而不是使用

 @q = "%#{params[:query]}%"
 @products = Product.where("name ILIKE ? or description ILIKE ?", @q, @q)

使用

 @products = Product.search(params[:query])
模型中的

将代码更改为

"name LIKE ? OR description LIKE ?", "%#{query}%", "%#{query}%"