您好我正在为我的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应用程序之一,对于我的愚蠢错误感到抱歉。
答案 0 :(得分:3)
def self.search_products(search)
if search
where(["name LIKE ?","%#{search}%"])
else
all
end
end
此代码应该在您的模型代码中,而不是控制器