2013-08-12 2 views
0

Привет, я пытаюсь создать ресторан-сайт с простой системой бронирования для столов с рубинами на рельсах (V .: 3.2.13). У меня 3 таблицы: клиенты (имя, электронная почта), бронирование (table_id, customer_id), таблицы (места, площадь).Как добавить записи для системы бронирования в ruby ​​on rails

Я настроил модели, как следующее:

class Reservation < ActiveRecord::Base 
    belongs_to :customer 
    belongs_to :table 
end 

class Customer < ActiveRecord::Base 
    has_many :reservations 
    has_many :tables, :through => :reservations 
end 

class Table < ActiveRecord::Base 
    has_many :reservations 
    has_many :customers, :through => :reservations 
end 

Я сделал поиск с form_tag для выбора таблицы. Если клиент нашел нужную таблицу, он может щелкнуть по ссылке «book this table» -link, а затем он перенаправляется на new_customer_path, чтобы применить свое имя и адрес электронной почты. Моя проблема теперь в бронировании. Как я могу динамически/автоматически добавлять резервирование с выбранной таблицей и новым созданным клиентом?

Я пытался что-то подобное в CustomerController, но он не работает:

def create 
    @customer = Customer.new(params[:customer]) 
    table = Table.find(params[:table_id]) 
    @reservation = @customer.Reservation.build(:table => table) 
    @reservation.save 
end 

Не могли бы вы сказать мне, как добавить оговорки.

Заранее спасибо.

ответ

0

@reservation = @customer.reservations.build(table: table).save!

Благодаря

+0

Ну проблема в том, что ошибка возникает with'table = Table.find (Params [: table_id]) ': Не удалось найдите таблицу без идентификатора. Я думаю, что param: table_id недоступен. У вас есть идея, как это исправить? Спасибо – Mike

+0

да вы можете проверить журнал, если ваши взгляды отправят 'table_id' в качестве параметра или нет –

+0

вот так:': table_id => 2' в параметрах входа –

1

Вы можете сделать

@reservation = @customer.reservations.build 
# set table: 
@reservation.table = table 
# save record: 
@reservation.save 
Смежные вопросы