数据库通过Http在rails中查询?

时间:2013-05-12 12:46:26

标签: ruby-on-rails ruby-on-rails-3

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

1 个答案:

答案 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,以防它不存在。