2010-02-24 3 views
0

У меня есть первичная модель для моего проекта Place.rb с помощью place_controller, и в настоящее время я получил именно то, что хочу для пользователей в конце моего проекта. С контроллером вложенных фотографий, обзором и т. Д.Вложенные маршруты в Rails с псевдонимом

Теперь я хочу создать ресурс управления, который в основном представляет собой псевдоним для Places с собственными вложенными ресурсами, некоторые из которых перекрываются, некоторые из них новы.

Я пробовал создать новый контроллер для него под названием «Управление», но мне сложно проводить маршруты. Я не совсем уверен, что это зависание, но я полагаю, что я делаю что-то очень плохое. У меня было мало трудностей, когда я использовал Places в качестве контроллера для реальной модели и размещал другие ресурсы под ним.

Но, например, попытка создания новой записи для вложенного ресурса неправильно маршрутизируется.

Я могу получить маршрут маршрута, как new_manage_room_path(@place), для link_to, чтобы нормально работать. Но

для создания нового объявления в виде:

form_for manage_room_path(@place) не работает правильно дал действительный идентификатор. Я пробовал много других комбинаций, поставляющих объект, и: url.

Следует ли мне использовать отдельный контроллер и просто создать псевдоним или что такое специальная маршрутизация для этой цели?

map.resources :manage, :collection => { :upcoming => [ :post, :get ], :pending => [ :post, :get ] } do |manage| 
    manage.resources :rooms 
    manage.resources :room_rates, :as => :rates 
    manage.resources :availables 
    manage.resources :manage_bookings, :as => :bookings 
end 

map.resources :places do |place| 
    place.resources :bookings 
    place.resources :photos, :collection => { :sort => :post } 
    place.resources :reviews, :only => [ :index, :show ] 
end 



manage_rooms GET /manage/:manage_id/rooms(.:format)    {:controller=>"rooms", :action=>"index"} 
            POST /manage/:manage_id/rooms(.:format)    {:controller=>"rooms", :action=>"create"} 
        new_manage_room GET /manage/:manage_id/rooms/new(.:format)   {:controller=>"rooms", :action=>"new"} 
        edit_manage_room GET /manage/:manage_id/rooms/:id/edit(.:format)  {:controller=>"rooms", :action=>"edit"} 
         manage_room GET /manage/:manage_id/rooms/:id(.:format)   {:controller=>"rooms", :action=>"show"} 
            PUT /manage/:manage_id/rooms/:id(.:format)   {:controller=>"rooms", :action=>"update"} 
            DELETE /manage/:manage_id/rooms/:id(.:format)   {:controller=>"rooms", :action=>"destroy"} 
       manage_room_rates GET /manage/:manage_id/rates(.:format)    {:controller=>"room_rates", :action=>"index"} 
            POST /manage/:manage_id/rates(.:format)    {:controller=>"room_rates", :action=>"create"} 
       new_manage_room_rate GET /manage/:manage_id/rates/new(.:format)   {:controller=>"room_rates", :action=>"new"} 
      edit_manage_room_rate GET /manage/:manage_id/rates/:id/edit(.:format)  {:controller=>"room_rates", :action=>"edit"} 
        manage_room_rate GET /manage/:manage_id/rates/:id(.:format)   {:controller=>"room_rates", :action=>"show"} 
            PUT /manage/:manage_id/rates/:id(.:format)   {:controller=>"room_rates", :action=>"update"} 
            DELETE /manage/:manage_id/rates/:id(.:format)   {:controller=>"room_rates", :action=>"destroy"} 
       manage_availables GET /manage/:manage_id/availables(.:format)   {:controller=>"availables", :action=>"index"} 
            POST /manage/:manage_id/availables(.:format)   {:controller=>"availables", :action=>"create"} 
       new_manage_available GET /manage/:manage_id/availables/new(.:format)  {:controller=>"availables", :action=>"new"} 
      edit_manage_available GET /manage/:manage_id/availables/:id/edit(.:format) {:controller=>"availables", :action=>"edit"} 
        manage_available GET /manage/:manage_id/availables/:id(.:format)  {:controller=>"availables", :action=>"show"} 
            PUT /manage/:manage_id/availables/:id(.:format)  {:controller=>"availables", :action=>"update"} 
            DELETE /manage/:manage_id/availables/:id(.:format)  {:controller=>"availables", :action=>"destroy"} 
      manage_manage_bookings GET /manage/:manage_id/bookings(.:format)   {:controller=>"manage_bookings", :action=>"index"} 
            POST /manage/:manage_id/bookings(.:format)   {:controller=>"manage_bookings", :action=>"create"} 
     new_manage_manage_booking GET /manage/:manage_id/bookings/new(.:format)  {:controller=>"manage_bookings", :action=>"new"} 
     edit_manage_manage_booking GET /manage/:manage_id/bookings/:id/edit(.:format) {:controller=>"manage_bookings", :action=>"edit"} 
      manage_manage_booking GET /manage/:manage_id/bookings/:id(.:format)  {:controller=>"manage_bookings", :action=>"show"} 
            PUT /manage/:manage_id/bookings/:id(.:format)  {:controller=>"manage_bookings", :action=>"update"} 
            DELETE /manage/:manage_id/bookings/:id(.:format)  {:controller=>"manage_bookings", :action=>"destroy"} 
        pending_manage POST /manage/pending(.:format)      {:controller=>"manage", :action=>"pending"} 
            GET /manage/pending(.:format)      {:controller=>"manage", :action=>"pending"} 
        upcoming_manage POST /manage/upcoming(.:format)      {:controller=>"manage", :action=>"upcoming"} 
            GET /manage/upcoming(.:format)      {:controller=>"manage", :action=>"upcoming"} 
         manage_index GET /manage(.:format)        {:controller=>"manage", :action=>"index"} 
            POST /manage(.:format)        {:controller=>"manage", :action=>"create"} 
         new_manage GET /manage/new(.:format)       {:controller=>"manage", :action=>"new"} 
         edit_manage GET /manage/:id/edit(.:format)      {:controller=>"manage", :action=>"edit"} 
          manage GET /manage/:id(.:format)       {:controller=>"manage", :action=>"show"} 
            PUT /manage/:id(.:format)       {:controller=>"manage", :action=>"update"} 
            DELETE /manage/:id(.:format)       {:controller=>"manage", :action=>"destroy"} 
+0

Обычно 'form_for @ place' должен делать t рик. Вставьте 'rake routes' и содержимое вашего файла' routes.rb', чтобы мы могли продолжить исследование. –

+0

Да ... обычно. Но в этом случае он не работает. Когда я не мог понять это, я подумал, что это может иметь какое-то отношение к тому факту, что корневой ресурс не был основан на реальной модели, а просто там, чтобы различать модель мест между пользователями и аспектами менеджера. – holden

ответ

2

Try:

<% form_for @new_room, :url => manage_rooms_path(@place) do |f| %> 

или, возможно, он будет работать так:

<% form_for manage_rooms_path(@place, @new_room) do |f| %> 

@new_room новый экземпляр модели номер, так что в контроллере оных:

@new_room = Room.new 
+0

Я думал, что пробовал каждую комбинацию. Спасибо, это работает. – holden

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