Неверная ассоциация. Убедитесь, что acceptpts_nested_attributes_for используется для
У меня есть форма check_in (резервирования), в которой в какой-то момент я хочу иметь вложенную форму для добавления к ней room_requests:
= nested_form_for @reservation, url: check_in_check_in_path, method: 'put' do |f|
= f.fields_for :guests do |guest_form|
= label_tag t('users.new.first_name'), nil, class: 'grey h2 input-label'
= guest_form.text_field(:first_name, class: 'check-in-input')
(...)
= f.link_to_add "Add guest", :guests
= f.fields_for :room_requests do |room_form|
= label_tag nil, t('rooms.new.category'), class: 'grey h2'
= room_form.select(:room_category_id, current_hotel.room_categories.collect {|p| [ p.category, p.id, rate: p.base_rate ] }, {}, class: 'dropdown form-input category-dropdown')
(...)
= f.link_to_add "Add room request", :room_requests
Из приведенного выше кода кнопка "Добавить гостя" работает, а "Добавить запрос номера" - нет.
Из модели бронирования:
class Reservation < ActiveRecord::Base
has_many :guests
accepts_nested_attributes_for :guests, allow_destroy: false
has_many :room_requests, dependent: :destroy, inverse_of: :reservation
accepts_nested_attributes_for :room_requests, allow_destroy: true
end
И booking_controller.rb:
class ReservationsController < ApplicationController
def reservation_params
params.require(:reservation).permit(
:start_date, :end_date, :status, :tag_list, :sales_channel_id,
:comments, :room_category_id, :client_id,
client_attributes: [:id, :hotel_id, :first_name, :last_name, :address, :country,
:doc_type, :doc_number, :email, :phone, :city],
room_requests_attributes: [:id, :adults, :children, :room_category_id, :hotel_id,
:price, :rate_id, :room_id, :_destroy],
guests_attributes: [:id, :first_name, :last_name, :nationality, :room_request_id,
:doc_type, :doc_number])
end
end
Что мне не хватает?
1 ответ
На первый взгляд кажется, что для гостя у вас есть:
= f.link_to_add "Add guest", :guest
Но для room_requests у вас есть:
= f.link_to_add "Add room request", :room_requests
Попробуйте сделать:room_requests единственное число =>:room_request