Ruby on Rails:搜索表单

时间:2015-05-25 14:42:54

标签: ruby-on-rails ruby search-form

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

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

(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操作中似乎有点错误,因为我收到此错误:

  

ProductsController #index

中的NoMethodError      

未定义的方法`search_products&#39;对于#

我发布了我的控制器:

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应用程序之一,对于我的愚蠢错误感到抱歉。

1 个答案:

答案 0 :(得分:3)

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

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