首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails嵌套表单仅向预订添加一个Passenger对象

Rails嵌套表单是一种在Rails框架中用于处理表单数据的技术。它允许我们在一个表单中同时提交多个相关联的对象数据,其中一个对象作为主对象,其他对象作为嵌套对象。

在这个问答内容中,我们需要向预订中添加一个Passenger对象。为了实现这个功能,我们可以使用Rails的嵌套表单功能。

首先,我们需要在预订表单中添加一个嵌套的Passenger表单。可以通过使用fields_for方法来实现。在预订表单中的代码如下:

代码语言:txt
复制
<%= form_for @booking do |f| %>
  <%= f.label :booking_number %>
  <%= f.text_field :booking_number %>

  <%= f.fields_for :passenger do |passenger_fields| %>
    <%= passenger_fields.label :name %>
    <%= passenger_fields.text_field :name %>

    <%= passenger_fields.label :age %>
    <%= passenger_fields.number_field :age %>
  <% end %>

  <%= f.submit "Create Booking" %>
<% end %>

在上面的代码中,我们使用fields_for方法来创建一个嵌套的Passenger表单。通过passenger_fields变量,我们可以访问Passenger对象的属性,并在表单中显示相应的输入字段。

接下来,我们需要在预订控制器中更新相应的代码,以便能够接受Passenger对象的参数并将其保存到数据库中。在预订控制器中的代码如下:

代码语言:txt
复制
class BookingsController < ApplicationController
  def new
    @booking = Booking.new
    @booking.build_passenger
  end

  def create
    @booking = Booking.new(booking_params)

    if @booking.save
      redirect_to @booking
    else
      render 'new'
    end
  end

  private

  def booking_params
    params.require(:booking).permit(:booking_number, passenger_attributes: [:name, :age])
  end
end

在上面的代码中,我们使用build_passenger方法来创建一个新的Passenger对象,并将其与预订对象关联起来。在booking_params方法中,我们使用passenger_attributes来允许Passenger对象的参数被接受。

最后,我们需要在预订模型中添加相应的关联关系。在预订模型中的代码如下:

代码语言:txt
复制
class Booking < ApplicationRecord
  has_one :passenger
  accepts_nested_attributes_for :passenger
end

在上面的代码中,我们使用has_one方法来定义预订和Passenger之间的关联关系。通过accepts_nested_attributes_for方法,我们可以接受Passenger对象的参数。

这样,当我们提交预订表单时,预订对象和嵌套的Passenger对象将被同时创建和保存到数据库中。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。您可以通过以下链接了解更多信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券