【发布时间】:2016-06-24 01:48:00
【问题描述】:
我正在尝试为我正在构建的 Rails 应用程序实现搜索字段以学习 Rails。
当我进行搜索时,rails 会返回此错误。
ActiveRecord::StatementInvalid in ProductsController#search
PG::UndefinedColumn: ERROR: column "short_description" does not exist LINE 1: ...WHERE (name LIKE '%%' or description LIKE '%%' or short_desc... ^ : SELECT "products".* FROM "products" WHERE (name LIKE '%%' or description LIKE '%%' or short_description LIKE '%%')
在我的 _navbar.html.erb 我有这段代码
<%= 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 %>
在 products_controller.rb 我有这个代码
def search
@q = "%#{params[:query]}%"
@products = Product.where("name LIKE ? or description LIKE ? or short_description LIKE ?", @q, @q, @q)
@categories = Category.joins(:products).where(:products => {:id => @products.map{|x| x.id }}).distinct
end
在 routes.rb 我有这行代码
post 'products/search' => 'products#search', as: 'search_products'
有人可以帮我解决这个问题吗,我没有足够的经验来自己解决这个问题。
【问题讨论】:
-
您能否为
products表提供您的schema.rb 的一部分?似乎short_description列不存在。 -
嗨,那是真的 :) 我从代码中删除了它,它现在看起来像这样并且运行良好
@products = Product.where("name LIKE ? or description LIKE ?", @q, @q)
标签: ruby-on-rails ruby postgresql search