У меня есть три модели Book_Room
, Invoice
и Bill
.Invoice
принадлежит BookRoom
и имеет много счетов.ошибка - недопустимая ошибка параметров для: счет-фактура выдается, когда я пытаюсь создать Книжную комнату после того, как я четко попросил принять вложенные параметры
class Invoice < ApplicationRecord
belongs_to :book_room
has_many :bills
accepts_nested_attributes_for :bills
end
И BookRoom
должен иметь только один счет, но я использовалhas_many
, поскольку форма fields_for
не отображается при использовании has_one
.
class BookRoom < ApplicationRecord
belongs_to :customer
has_and_belongs_to_many :rooms
has_many :invoices
accepts_nested_attributes_for :invoices
end
Вот мое действие create
для контроллера invoice
:
def create
@booking = BookRoom.find(params[:book_room_id])
@invoice = @booking.invoice.new(invoice_params)
if @invoice.save
redirect_to @invoice, notice: 'Invoice was successfully created.'
else
render :new
end
end
А вот моя форма, которая предназначена для создания счетов и счетов.
<%= f.fields_for :invoice do |i| %>
<%= i.fields_for :bill do |b| %>
<%= b.label :price %>
<%= b.number_field :price %>
<%= b.hidden_field :type, value: :deposit %>
<% end %>
<% end %>
И, наконец, мой book_room
контроллер:
def create
@book_room = @customer.book_rooms.new(book_room_params)
if @book_room.save
redirect_to @book_room, notice: 'Book room was successfully created.'
else
render :new
end
end
def book_room_params
params.require(:book_room).permit(:customer_id, :start_date, :end_date, :room_ids=>[], :invoices_attributes => [ :invoice_id, :bills_attributes => [:price, :type] ])
end
Когда я пытаюсь создать книжную комнату с записями счетов, она выдает ошибку из-за неразрешенного счета-фактуры за параметры.Если есть способ получить форму для отображения на has_one
отношениях, я буду признателен за это.