Вложенные маршруты в Rails с псевдонимом - PullRequest
0 голосов
/ 24 февраля 2010

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

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

Я попытался создать для него новый контроллер под названием Manage, но мне сложно работать с маршрутами. Я не совсем уверен, что зависание, но я полагаю, что я делаю что-то очень неправильно. У меня не было особых проблем, когда я использовал 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"}

1 Ответ

2 голосов
/ 25 февраля 2010

Попробуйте:

<% 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...