1

您好,我正在为我的 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' 用于#

我发布我的控制器:

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

4

1 回答 1

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

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

于 2015-05-25T14:48:34.867 回答