RoR маршрутизация очень основная проблема - PullRequest
0 голосов
/ 16 августа 2010

У меня есть экзаменационный контроллер.

В маршрутах .rb есть "ресурсы: экзамены"

В контроллере есть сгенерированные REST-методы.

Я хочу добавить свой собственный метод:

def search
  @exams = Exam.where("name like ?", params[:q])
end

В файле просмотра:

<%= form_tag(search_path, :method => "post") do %>
  <%= label_tag(:q, "Szukaj: ") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Szukaj") %>
<% end %>

Я знаю, пока нет представления результатов, в данный момент он не работает вообще (:

Когда я перехожу на http://localhost:3000/exams/search, он отображает его, чтобы показать контроллер, и поиск - это: id параметр, затем ...

Как заставить http://localhost:3000/exams/search запустить контроллер поиска?

Ответы [ 2 ]

3 голосов
/ 16 августа 2010

Вы забыли добавить маршрут.Поместите это в routes.rb, перед resources :exams

map.search '/exams/search', :controller => :exams, :action => :search

Обратите внимание, что resources :exams не генерирует маршруты для всех открытых методов контроллера, он генерирует очень специфический набор маршрутов.Вы можете найти более подробную информацию в руководстве по прокладке рельсов .(см., в частности, раздел 3.2)

2 голосов
/ 16 августа 2010

Вам нужно будет добавить дополнительные параметры в ваше отображение.Вы можете добавить методы «коллекции» следующим образом:

map.resources :exams, :collection => {:search => :get}

Когда вы rake routes, вы увидите, что он генерирует что-то вроде этого:

...