Ruby 在 Rails 上:搜索表单

Ruby on Rails : Search form

您好,我正在为我的摩擦应用程序开发一个简单的搜索表单。

我在脚手架生成的现有控制器中创建了一个动作:

(rails g scaffold Product name description:text price:decimal)

调用了 search_products 并且视图调用了 search.html.erb

在搜索视图中,我有 text_field_tag 插入搜索参数的地方(当然还有用于发送参数的提交按钮)

<%= form_tag products_path, :method => 'get' do %>
 <%= text_field_tag :search, params[:search]%>
 <%= submit_tag "Search" %> 
<% end %>

当我按下时,将页面根提交到 products_path,在那里我找到了我搜索的产品列表。

这似乎是我的 search_products 操作中的一种错误,因为我收到此错误:

NoMethodError in ProductsController#index

undefined method `search_products' for #

我post我的控制器:

def self.search_products(search)
    if search
      where(["name LIKE ?","%#{search}%"])
    else
      all 
    end
  end

  # GET /products
  # GET /products.json
  def index
    @products = Product.search_products(params[:search])
  end

这是我的第一个 rails 应用程序,对于我的愚蠢错误深表歉意。

 def self.search_products(search)
   if search
     where(["name LIKE ?","%#{search}%"])
   else
     all 
   end
 end

此代码应该在您的模型代码中,而不是控制器中