【发布时间】:2016-01-14 16:34:16
【问题描述】:
我正在尝试为 Sinatra 上的简单产品库存应用程序创建基本搜索功能,但不知道如何使控制器和视图正确地将具有相似名称的所有产品输出到结果页面。
SearchPage.erb:
<form action="/search", method="post">
<input type="text" name="product[name]">
控制器:
post '/search' do
@Products = Product.find_by(name: params[:product][:name])
@Products = Product.all(:name.like => "%#{params[:name]}%") #found this on another question
erb :"result"
end
结果.erb
<% @Products.each do |product| %>
<%=product.name %>
<%=product.details %>
编辑:我能够使用以下代码根据建议进行搜索。谢谢!:
Search.erb 视图
<form action="/search", method="get">
<input type="text" name="search">
控制器
get '/search' do
@products = Product.all
if params[:search]
@products = Product.search(params[:search])
else
@products = Product.all
end
erb :'results'
end
型号
class Product < ActiveRecord::Base
def self.search(search)
where("name like ?", "%#{search}%")
end
Results.erb 视图
<% if @products.present? %>
<table>
<td>Product Name</td><td>Company</td>
<% @products.each do |product| %>
<tr><td><a href="/products/<%= product.id %>"><%=h product.name %></a> </td>
<td><%=h product.company.name %></td>
<% end %>
<% else %>
<p>There are no Products containing the term(s) <%= params[:search] %>.</p>
<% end %>
</table>
【问题讨论】:
标签: ruby search activerecord sinatra