Scaffold search

Witam

Mam pytanie jak dopisac do zwyklego rusztowania scaffold , metode search?

dopisalem w controllerze

def search
if params[:query]
@products = Product.search(params[:query])
else
@products = []
end
end

do index.html.erb

search.rhtml.

<% if @products.empty? %>
There were no results for your query


<% else %>

<% for product in @products %>
Result: <% product.title %>
<% end %>

<% end %>

mam pole w indexie do szukania ale w momencie kliniecia na pole ‘szukaj’ wyskakuje mi blad

Routing Error

No route matches “/search” with {:method=>:get}

prosze o pomoc

Hmmm robienie do searcha osobnej akcji jest nieco nierozważne - nie wystarczy w index sprawdzać czy jest przekazywany parametr query i pobierać pasujące rekordy?

A teraz masz błąd ponieważ w routes nie masz dodanej dodatkowej akcji, musisz dodać coś takiego:

map.resources :products, :new => {:search => :get}

Poczytaj http://guides.rubyonrails.org/routing.html
Po za tym czemu w widoku dla index do generowania formularza nie używasz Form Helpera??

Aha i ścieżka do tego Twojego searcha powinna wyglądąć tak: /products/search
Używaj do ścieżek odpowiednich metod helperowych, sprawdź jaka powinna być wykonując w konsoli:

rake routes

dzieki za pomoc , ale ten moj kod wogole nie dziala jak powinien … :frowning:

Macie moze jakies sugestie, albo linki do stron gdzie opisany jest search dla scaffolda ?

beny18241, Zrób tak jak Ci napisał lego, sprawdzaj w index czy jest odpowiedni parametr w zapytaniu i
z tego będziesz wiedział czy to jest wyszukiwanie czy zwykły index. To nie ma nic do scaffolda w tym przypadku,
nie musisz ruszasz routes.

zrobilbym, jakbym umial :)…
Niestety jestem poczatkujacy w railsach… prosze o jakis dokladniejszy opis

[code]if params[:search]

show results f.e. find(:all, :conditions => [:name => params[:search] ]) - odpowiada za

#przygotowanie wyników wyszukiwania

else

show all f.e. find(:all) - odpowiada za pokazanie wszystkich elementów

end[/code]