Форма за търсене на Rails - не сте сигурни как да я накарате да работи?

Опитвам се да добавя формуляр за търсене на моята главна начална страница на моето приложение rails, който може да търси в кандидат модела, за да види, че ако напиша името на кандидат, той показва снимки на възможни кандидати и щракването върху тях получава към техните страници за кандидати.

Въпрос: формулярът за търсене се показва на началната страница, но след това получавам грешка при маршрутизиране: Няма маршрут, съответстващ на [GET] "/търсене"

Ето как изглежда кодът във views/home/index.html.erb:

<%= form_tag("/search", :method => "get") do %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>

Контролер за търсене:

def index
@candidates = Candidate.search(params[:name])
end

Изглед за търсене (views/search/index.html.erb):

<h1> Here are your search results: </h1>
<% @candidates.each do |candidate| %>
<%= link_to image_tag(candidate.picture, :size => "100x100", :alt => "Edit Entry"),     candidate%>
<% end%>

Кандидат модел:

def self.search(name)
 where('name LIKE ?', "%#{name}%")
end

Рейк маршрути:

candidates_show GET    /candidates/show(.:format)     candidates#show
candidates_new GET    /candidates/new(.:format)      candidates#new
donations_index GET    /donations/index(.:format)     donations#index
home_index GET    /home/index(.:format)          home#index
import_candidates POST   /candidates/import(.:format)   candidates#import
candidates GET    /candidates(.:format)          candidates#index
POST   /candidates(.:format)          candidates#create
new_candidate GET    /candidates/new(.:format)      candidates#new
edit_candidate GET    /candidates/:id/edit(.:format) candidates#edit
candidate GET    /candidates/:id(.:format)      candidates#show
PUT    /candidates/:id(.:format)      candidates#update
DELETE /candidates/:id(.:format)      candidates#destroy
root        /                              home#index

person girlrockingguna    schedule 11.04.2013    source източник
comment
Какъв е вашият въпрос?   -  person Christian-G    schedule 12.04.2013
comment
Съжалявам за объркването, редактирах го малко!   -  person girlrockingguna    schedule 12.04.2013
comment
Изглежда, че може би използвате домашния контролер, но кодът за търсене е във вашия контролер за търсене. Може би преместете този метод на търсене в домашния контролер. Ще трябва да промените себе си на кандидат   -  person Michael Durrant    schedule 12.04.2013
comment
Все още получавам същата грешка при маршрутизиране. Опитах се да добавя маршрут за търсене, но не бях сигурен към какво да го съпоставя...   -  person girlrockingguna    schedule 12.04.2013


Отговори (1)


Вашият етикет на формуляр сочи към search, но няма маршрут, наречен search. Както беше предложено по-горе, или преместете метода index от вашия контролер за търсене във вашия домашен контролер, или добавете маршрута search във вашия routes.rb като

match "search" => "search#index"
person Christian-G    schedule 11.04.2013
comment
Все още получавам същата грешка при маршрутизиране. Опитах се да добавя маршрут за търсене, но не бях сигурен към какво да го съпоставя... - person girlrockingguna; 12.04.2013
comment
Проработи! Въпрос: търсенето не е ефективно при филтриране на кандидатите (просто показва снимките на всички тях). Има ли нещо, което правя с SQL командата? - person girlrockingguna; 12.04.2013
comment
Погледнете във вашия лог файл, за да видите каква заявка се изпълнява tail -f log/development.log от основната папка на приложението ви - person Christian-G; 12.04.2013
comment
Йосарян, трябва ли да имам кода за търсене на кандидат (т.е. всички SQL неща) в модел за търсене? Чувствам, че това е, което прецаква. Изходът гласи следното: Започна GET /assets/home.js?body=1 за 127.0.0.1 в 2013-04-11 15:43:04 -0700 Обслужван актив /home.js - 304 не е променен (0ms) Започна GET /assets/application.js?body=1 за 127.0.0.1 в 2013-04-11 15:43:04 -0700 Обслужван актив /application.js - 304 не е променен (0ms) Стартира GET /assets/Moore.jpg за 127.0 .0.1 в 2013-04-11 15:43:04 -0700 Обслужван актив /Moore.jpg - 304 непроменен (0ms) - person girlrockingguna; 12.04.2013
comment
Сега го имайте в модела на кандидата, което предполага, че where clause ще бъде изпълнено в таблицата с кандидати. Така че ще изглежда нещо като: select * from candidates where candidate.name like %whut% - person Christian-G; 12.04.2013
comment
Това, което търсите във вашия лог файл, са SQL заявките, които rails създава. Не GET заявките :) Анализирайте тези SQL заявки - person Christian-G; 12.04.2013