0

我正在研究 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 中添加的路由是什么?

4

1 回答 1

1

不管漂亮的形式如何, 我都会这样做: 替换
config/routes.rbresources :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,以防它不存在。

于 2013-05-12T12:57:43.207 回答