Rails:动态创建表单字段,使用一个提交创建多个记录

时间:2016-09-21 00:59:45

标签: ruby-on-rails forms ruby-on-rails-4 coffeescript

我的网站让用户预订汽车。有很多车可供选择,汽车有不同的max_occupancy号码。一旦用户选择汽车,注册过程开始,用户必须为每位乘客提交一个名称。

模型

class Booking < ActiveRecord::Base
  has_many :cars
  accepts_nested_attributes_for :cars
end

class Car < ActiveRecord::Base
  belongs_to :bookings
  has_many :passengers
  accepts_nested_attributes_for :passengers
end

class Passenger < ActiveRecord::Base
  belongs_to :cars
  accepts_nested_attributes_for :passengers
end

控制器

def new
  @booking = Booking.new
  @car = @booking.cars.build
  @car.passengers.build
end

def signup
  @car = Car.find(params[:id])
  @max_occupancy = @car.max_occupancy
  @booking = Booking.new    
end

表格

<%= form_for(@booking) do |f| %>
  <%= f.fields_for :cars do |car| %>
    <%= car.hidden_field :car_id, value: @car.id %>
    <%= car.number_field :quantity, value: 1, class: 'form-control', min: 1     %>
    <%= car.fields_for :passengers do |passenger| %>
      <%= passenger.label :name %>
      <%= passenger.text_field :name %>
    <% end %>
  <% end %>
<% end %>

功能 当表单首次呈现时,默认数量设置为1,所以在页面加载时我想要块

<%= passenger.label :name %>
<%= passenger.text_field :name %>

渲染1 * @car.max_occupancy。如果数量增加或减少,则块应呈现为n * @car.max_occupancy(其中n是number_field中设置的数量)。任何空白的passenger字段都应该被忽略 我将如何创建此功能以及如何通过单次提交更改控制器以创建多个passengers

0 个答案:

没有答案