Есть несколько способов сделать это, я покажу вам один из способов:
routes.rb:
resources :machines do
resources :reservations
end
Это приведет к получению путей, таких как / machines / 1 / reservations и / machines / 1 / reservations / new и т. Д. Запустите rake routes
, чтобы просмотреть сгенерированные маршруты и имена их вспомогательных методов.
reservation.rb
class Reservation < ActiveRecord::Base
belongs_to :machine
end
machine.rb
class Machine < ActiveRecord::Base
has_many :reservations, :dependent => :destroy
end
reservations_controller.rb
Обновите новый метод следующим образом:
def new
@machine = Machine.find params[:machine_id]
@reservation = Reservation.new(:machine => @machine)
end
Вид / оговорки / _form.html.erb
<%= form_for [:machine, @reservation] do |f| %>
... put your machine data stuff here ...
... put your form fields here ...
<% end %>
Это должно сработать. Имейте в виду, что с настройкой маршрутов, как я обрисовал в общих чертах, вам потребуется обновить помощники по маршрутам, найденные в коде в разных местах. Используйте rake routes
, чтобы увидеть, как называются эти маршруты и т. Д.
Кроме того, создайте ссылку для создания нового бронирования (возможно, на странице шоу-машины?), Используя что-то вроде этого:
link_to "New Reservation", new_machine_reservation_path(@machine)
Конечно, замените @machine, если необходимо, любой переменной, хранящей машину, для которой вы хотите сделать резервирование.
Кроме того, не забудьте обновить reservations_controller # create также!
Надеюсь, это поможет.