使用来自 Rails 中具有自动递增名称的表单的输入 X 创建 X 数量的新数据库行

Creating X amount of new database rows using input X from a form in Rails with auto-incrementing name

我正在开发我的第一个 rails 应用程序,酒店业主可以在其中添加房间类型(高级房、经济型房、单人房、双人房等),包括。该类型房间的数量 (room_count)。

我目前正在使用 3 tables,

(i) hotels table,用户可以在其中创建新酒店,

(ii) accommodation_categories table,用户可以在其中输入新类型的房间,包括。 room_count &

(iii) 一个住宿 table,每个类型都有单独的房间。

我的问题是如何使用 accommodation_categories table 的 room_count 输入(通过表格获得)可用于在我的住宿中自动创建这些房间记录 table

例如如何将 accommodation_category table 输入 room_count 翻译成 room_count* 住宿记录?

~如果这个解释太详细了,我真的很抱歉,但我的技术词汇量有限,我不知道该怎么解释~

routes.rb

Rails.application.routes.draw do
  resources :hotels do
    resources :accommodation_categories do
      resources :accommodations
  end
end

hotel.rb

class Hotel < ApplicationRecord
  has_many :accommodation_categories, dependent: :destroy
end

accommodation_category.rb

class AccommodationCategory < ApplicationRecord
  belongs_to :hotel
  has_many :accommodations, dependent: :destroy
end

accommodation.rb

class Accommodation < ApplicationRecord
  belongs_to :accommodation_category
end

accommodation_categories_controller.rb

def new
    @hotel = Hotel.find(params[:hotel_id])
    @accommodation_category = AccommodationCategory.new
  end

  def create
    @accommodation_category = AccommodationCategory.new(accommodation_category_params)
    @hotel = Hotel.find(params[:hotel_id])
    @accommodation_category.hotel = @hotel
    @accommodation_category.save
    redirect_to hotel_accommodation_categories_path
  end

views/accommodation_categories/new.html.erb

<%= simple_form_for [@hotel, @accommodation_category] do |f|%>
  <%= f.input :name %>
  <%= f.input :room_count %>
  <%= f.submit "Save", class: "btn btn-primary" %>
<% end %>

我确实使用了 cocoon gem,您可以使用它通过一种形式创建多个嵌套对象。它工作得很好。

要创建多个没有细节的对象,您可以使用控制器行,例如:

@accommodation_category[:accommodation_count].times {@accommodation_category.accommodations.build}