gpt4 book ai didi

ruby-on-rails - Rails 4 - 为表单中关联表中的行分配值

转载 作者:行者123 更新时间:2023-11-29 12:44:32 25 4
gpt4 key购买 nike

这里是 Rails 的初学者,对于我的项目,我需要创建一个包含名字、中间名、姓氏和他们的护照等内容的客户。我有另一个名为 passports 的表,用于存储护照。我希望能够添加与客户关联的护照号码。以下是相关的代码片段:

客户端 Controller

def new
@client = Client.new
end
def create
@client = Client.new(client_params)
if @client.save
redirect_to root_url
else
render 'new'
end
end

private
def client_params
params.require(:client).permit(:firstname, :middlename, :lastname, :PresentAddress)
end
end

护照 Controller

def new
@passport = Passport.new
end
def create
passport = Passport.new(passport_params)
if @passport.save
flash[:notice] = "Passport saved"
else
flash[:notice] = "Passport not saved"
end
end
private
def passport_params
params.require(:passport).permit(:idnumber, :country)
end
end

客户模型

has_one :passport, foreign_key: "client_id"

护照模型

belongs_to :client

客户端的迁移文件

create_table :clients do |t|
t.string :firstname
t.string :middlename
t.string :lastname
end

护照的移民文件

create_table :passport do |t|
t.string :passport
end

/clients/_form.html.erb

<%= form_for(@client) do |f| %>
<%= f.label :"First Name"%>
<%= f.text_field :firstname%>
<%= f.label :"Middle Name"%>
<%= f.text_field :middlename%>
<%= f.label :"Last Name"%>
<%= f.text_field :lastname%>
<%= f.submit "Create Client" %>
<% end %>

/passport/_form.html.erb

<%= form_for([@client, @client.passport.build]) do |f| %>
<%= f.label :"Passport ID Number" %>
<%= f.text_field :idnumber %>
<% f.submit "Create Passport" %>
<% end %>

/clients/new.html.erb

<%= render "clients/form" %>
<%= render "passports/new" %>

我希望能够以这种形式为客户创建护照并将其发送到我的 Postgres 数据库。我该怎么做呢?如果我遗漏任何其他信息,请告诉我。

编辑 - 现在更改为更简单的字段。还进行了修改以执行 ChiefrockaChris 建议的操作。

最佳答案

执行此操作的方法是将地址的#_form.html.erb View 放在地址 View 文件夹下,然后将其呈现为 client#create、client#update 等 View 中的部分 View 。例如:

#clients/_form.html.erb
<%= form_for(@client) do |f| %>
<%= f.label :"First Name"%>
<%= f.text_field :FirstName%>
<%= f.label :"Middle Name"%>
<%= f.text_field :MiddleName%>
<%= f.label :"Last Name"%>
<%= f.text_field :LastName%>
<%= f.label :"Present address"%>
<%= f.text_field :PresentAddress %>
<%= f.submit "Create Client" %>
<% end %>

然后在您的地址 View 文件夹中

#addresses/_form.html.erb
<%= form_for ([@client, @client.addresses.build]) do |f| %>
<%= f.label :"Street Name"%>
<%= f.text_field :street_name%>
<%= f.submit "Create Address" %>
<% end %>

然后在客户端#new:

#client/new.html.erb
<%= render "clients/form" %>
<%= render "addresses/form" %>

还要确保您的 address#create 方法中有一些内容将引用用户创建,以便将其保存在数据库中。另外请不要将您的属性名称大写。

关于ruby-on-rails - Rails 4 - 为表单中关联表中的行分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com