Wyszukiwarka ładnie znajduje wyniki. Pojawił się problem jak dorzuciłem devise
Mianowicie przy rejestracji nowego użytkownika (jeśli są wszystkie pola wypełnione i spełnione są warunki np. z automatu hasło musi mieć 8 znaków etc. ) to wszystko ładnie działa. Jeżeli pozostawię puste pola wywala mi błąd:
NoMethodError in Devise/registrations#create, undefined method `model_name’ for NilClass:Class.
Jak usunę wyszukiwarkę to ładnie pokazuje mi błędy.
Jak to rozwiązać ?
Jeśli miałbym dostęp do kontrolera registrations, to w akcji create pewnie dodanie @search = Offer.search(params[:search]) rozwiązałoby problem.
Jak wiadomo kontroler ten jest niedostępny, a nadpisywanie nie jest polecane przez programistów. Poza tym takim podejściem musiałbym dorzucać tą linię prawie w każdym kontrolerze.
Jak więc rozwiązać ten problem ?
Mógłbym wyszukiwanie przerzucić do kontrolera Offers, ale jak korzystać później z tego w layout’cie application ?
Wydaje mi się, że powinieneś find_search dać w kontrolerze Offer, następnie sam formularz wrzucić do layoutu i go później renderować w application.rb z tym, że
..
<% render :partial => 'find' %>
</code]
działało (wyświetlało wyniki - błędu) tylko dla kolumny offers.
Przechodząc do innej kolumny np. kontakt wywalało błąd, że nie ma takiego partiala, pomimo, że miałem w tym partialu tak jak mówiłeś
[ode]
<%= form_for @search, url => { :controller => 'offers', :action => 'find_search' } do |f| %>
.
Nadpisując metodę create w devise tzn dopisując linie
@search = Offer.search(params[:search])
...
dostaję to co chciałem uzyskać tj. przy braku wypełnionych pół
Sign up
3 errors prohibited this user from being saved:
Email can't be blank
Password can't be blank
Password can't be blank
przy braku nadpisania metody miałem
NoMethodError in Devise/registrations#create
..
undefined method `model_name' for NilClass:Class
Uzyskany efekt jest, ale jak powinienem to zrobić, aby było dobrze ?
Przecież głupotą będzie dodawać w każdym kontrolerze ciągle @search = …