2013-05-12 2 views
0

Я работаю над rails app, в котором я создал таблицу Название продукта: string и Number: integer.Запрос базы данных через Http в рельсах?

Приложение должно предоставить пользователю форму, в которой он может искать продукт по его номеру, если существует продукт, он должен указывать имя продукта из базы данных.

Мой поиск.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

Независимо от хитроумных форм, это, как я сделал бы это:
В 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 для отображения информации о продукте; позаботьтесь о том, действительно ли найден нужный продукт или нет. Я установил boolean @not_found в том случае, если он не существует.

+0

Я получаю эту ошибку на странице поиска. Не могу найти продукт с id = search –

+0

После прохождения через действие контроллера на 'search.html.erb'? – kiddorails

+0

Я получаю эту ошибку после обновления всех предложенных вами файлов, а затем навигации по продуктам/поиску. –

Смежные вопросы