使用来自 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}
我正在开发我的第一个 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}