2011-08-18 2 views
2

Я пытаюсь использовать meta_search для поиска в глобальном поиске и поиска моделей.Проблема маршрутизации с Rails 3

для поиска моделей, в индексном файле модели. Я создаю form_for с этим кодом.

<%= form_for @search, :url => building_path, :html => {:method => :get} do |f| %> 
<%= f.label :name %> 
<%= f.text_field :city %> 
<%= f.submit %> 
<% end %> 

моя модель контроллера этот код

def index 
@search = Building.search(params[:search]) 
@buildings = @search.all 
end 

Но, когда я пытаюсь показать индекс для моего дома, у меня есть сообщение об ошибке

ActionController::RoutingError in Buildings#index 

Showing /Users/stephanebaribeau/Sites/cadifice/app/views/buildings/index.html.erb where line #4 raised: 

No route matches {:action=>"show", :controller=>"buildings"} 

Extracted source (around line #4): 

1: <h1>Listing buildings</h1> 
2: 
3: 
4: <%= form_for @search, :url => building_path, :html => {:method => :get} do |f| %> 
5: <%= f.label :name %> 
6: <%= f.text_field :city %> 
7: <%= f.submit %> 

мои routes.rb есть это Ресурсы: здания Ресурсы: этажи конец

Я пробовал без плюрального, той же ошибки.

мои грабли маршруты дают мне, что

 building_floors GET /buildings/:building_id/floors(.:format)   {:controller=>"floors", :action=>"index"} 
         POST /buildings/:building_id/floors(.:format)   {:controller=>"floors", :action=>"create"} 
    new_building_floor GET /buildings/:building_id/floors/new(.:format)  {:controller=>"floors", :action=>"new"} 
    edit_building_floor GET /buildings/:building_id/floors/:id/edit(.:format) {:controller=>"floors", :action=>"edit"} 
     building_floor GET /buildings/:building_id/floors/:id(.:format)  {:controller=>"floors", :action=>"show"} 
         PUT /buildings/:building_id/floors/:id(.:format)  {:controller=>"floors", :action=>"update"} 
         DELETE /buildings/:building_id/floors/:id(.:format)  {:controller=>"floors", :action=>"destroy"} 
      buildings GET /buildings(.:format)        {:controller=>"buildings", :action=>"index"} 
         POST /buildings(.:format)        {:controller=>"buildings", :action=>"create"} 
      new_building GET /buildings/new(.:format)       {:controller=>"buildings", :action=>"new"} 
     edit_building GET /buildings/:id/edit(.:format)      {:controller=>"buildings", :action=>"edit"} 
       building GET /buildings/:id(.:format)       {:controller=>"buildings", :action=>"show"} 
         PUT /buildings/:id(.:format)       {:controller=>"buildings", :action=>"update"} 
         DELETE /buildings/:id(.:format)       {:controller=>"buildings", :action=>"destroy"} 

, что случилось с моими маршрутами? благодаря

ответ

2

Изменить URL-адрес для buildings_path вместо building_path так:

<%= form_for @search, :url => buildings_path, :html => {:method => :get} do |f| %> 
+0

Я тоже пробовал, что и ошибка маршрута. – neimad

1

Вы используете building_path в вашем form_for линии, которая приведет вас к зданий /: идентификатор т.е. показать страницу. Вы должны использовать buildings_path, который доставит вас до index.

Смежные вопросы