Jestem nowy w Ruby on Rails i tworzę swoją pierwszą stronę. Mam model użytkownika z 3 kolumnami: firstname
, lastname
i email
. Korzystam z przeszukiwania, aby utworzyć wyszukiwarkę i chcę mieć jedno pole wyszukiwania, które przejdzie przez każdą kolumnę i wyświetli wynik.Ransack, przeszukaj wiele kolumn, jedno pole, tory 3
Zrobiłem user_controller.rb wygląda tak:
@q = User.search(params[:q])
@users = @q.result(:distinct => true)
i mój user \ index.html.erb wygląda następująco:
<%= search_form_for @search do |f| %>
<div class="field">
<%= f.label :firstname_cont , "Firstname" %>
<%= f.text_field :firstname_cont %>
<%= f.label :lastname_cont , "Lastname" %>
<%= f.text_field :lastname_cont %>
<%= f.label :email_cont , "Email" %>
<%= f.text_field :email_cont %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %>
daje mi 3 Szukaj pola, ale chcę tylko taki, który przechodzi przez imię, nazwisko i e-mail.
Edycja 1: Po przetestowaniu kilku innych elementów okazało się, że pole wyszukiwania nie może obsługiwać zarówno imienia, jak i nazwiska, ani żadnych białych znaków. Przeczytałem, że możliwe jest wykonanie metody helper_method w następujący sposób: Searching multiple fields with Ransack
Po otrzymaniu wyniku wyszukiwania wrzucam do mojego indeksu modelu etc: user/index. Gdzie mogę to zmienić?
Ale nie ma nic, jak z niego korzystać w widoku. Dlaczego tak trudno jest po prostu skrzeczenie, to co robisz: w Controller to zrobić -> w modelu to zrobić -> w widoku to zrobić -> I nie zapomnij naprawić takie trasy ->
Nicea, który pracował jak urok! Miałem googeld się ślepy, ale widzę teraz, że odpowiedź była tuż przede mną. Dzięki! –
Cieszę się, że mogę pomóc, gdy mogę^_^ – phron
Czy mogę prosić o więcej pomocy? Zauważyłem, że biała spacja lub wyszukiwanie za pomocą więcej niż jednego słowa sprawi, że ta metoda zawodzi. Na przykład, jeśli imię jest Foo, a nazwisko to Bar, a ja szukam paska Foo, to się nie powiedzie. Czy jest możliwe zbudowanie: def set_full_name .... end, a następnie wywołanie go w widoku?i jak nazwać to w widoku? z pomocą helper_method? Didenty udaje mi się to zrobić. I ostatnia rzecz, jeśli szukam w innym miejscu, moje wyniki zawsze będą mnie rzucały do modelu - indeksu. Dlaczego to? –