我正在使用rails app,其中我创建了一个表Product Name:string和Number:integer。
应用程序应该向用户提供一个表单,如果产品存在,他可以通过他的编号搜索产品,它应该从数据库中提供产品名称。
我的search.html.erb就是这个。
<%= form_for @products, :url => { :action => "create" }, :html => {:class => "nifty_form"} do |f| %>
<%= f.text_area :number, :size => "60x12" %>
<%= f.submit "Search" %>
<% end
ProductController中的搜索方法的定义和我需要在routes.rb中添加的路由是什么?
答案 0 :(得分:1)
无论漂亮的形式如何,我都会这样做:
在config/routes.rb
用
resources :products'
resources :products do
post 'search', :on => :collection
end
这会给我一个search_products_path
在您看来:
<%= form_for(:search, :url => search_products_path) do |f| %>
<%= f.text_field :number, :placeholder => "Enter number to search" %>
<%= f.submit "Search" %>
<% end %>
在products_controller.rb
def search
number = params[:search][:number]
@result = Product.find_by_number(number)
@not_found = true unless @result
end
在views/products/search.html.erb
中,使用@result
显示产品信息;在检查是否实际找到所需产品时要小心。我已经设置了布尔值@not_found,以防它不存在。