【发布时间】:2018-06-28 09:33:44
【问题描述】:
我正在尝试编写一个应用程序 - 用户详细信息的简单表单,它将数据保存到三个不同的表(1.users、2.companies、3.adresses)。 我使用belongs_to 和has_many 设置了一些关联,并且还使用nested_attributes 和fields_for 来构建一个表单。但我无法保存数据。 我是新手,所以可能我犯了一些愚蠢的错误,但自从 3 天以来我真的找不到它们。还试图在谷歌和这里的论坛帖子中查找,但没有找到代码,问题与子类有关。我在用户、公司和地址之间的联系很奇怪。谁能帮我?
这是我的表格:
<%= simple_form_for @user do |f| %>
<h5>Personal Details</h5>
<%= f.input :firstname, label: 'Your First Name:' %>
<%= f.input :lastname, label: 'Your Last Name:' %>
<%= f.input :email, label: 'Your Email:' %>
<%= f.input :dateofbirth, label: 'Your Date of Birth:' %>
<%= f.input :phonenumber, label: 'Your Phone Number' %>
<h5>Adress</h5>
<%= f.fields_for :adresses do |g| %>
<%= g.input :street, label: 'Street:' %>
<%= g.input :city, label: 'City:' %>
<%= g.input :zipcode, label: 'Zip Code:' %>
<%= g.input :country, label: 'Country:' %>
<% end %>
<h5>Company</h5>
<%= f.fields_for :companies do |h| %>
<%= h.input :name, label: 'Name:' %>
<% end %>
<%= f.fields_for :adresses do |i| %>
<%= i.input :comstreet, label: 'Street:' %>
<%= i.input :comcity, label: 'City:' %>
<%= i.input :comzipcode, label: 'Zip Code:' %>
<%= i.input :comcountry, label: 'Country:' %>
<% end %>
<%= f.button :submit %>
<% end %>
用户.rb
class User < ApplicationRecord
belongs_to :company, inverse_of: :users
belongs_to :adress, inverse_of: :users
validates_presence_of :firstname, :lastname, :email
validates_length_of :firstname, :maximum => 100
validates_length_of :lastname, :maximum => 100
end
公司.rb
class Company < ApplicationRecord
has_many :users, inverse_of: :companies
belongs_to :adress, inverse_of: :companies
accepts_nested_attributes_for :users
end
地址.rb
class Adress < ApplicationRecord
has_many :users, inverse_of: :adresses
has_many :companies, inverse_of: :adresses
accepts_nested_attributes_for :users, :companies
end
users_controller
class UsersController < ApplicationController
def index
end
def new
@user = User.new
@company = Company.new
@adress = Adress.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_path
end
end
private
def user_params
params.require(:user).permit(:firstname, :lastname, :email, :dateofbirth,
:phonenumber, company_attributes: [:name],
adress_attributes: [:street,:city, :zipcode, :country, :comstreet,
:comctiy, :comzipcode, :comcountry] )
end
end
【问题讨论】:
-
您有任何错误吗?还要检查您的 user_params ... :comcity 中的拼写是否不正确。
-
我什至无法保存,所以我无法读取错误列表。但这是我点击提交后控制台中发生的屏幕:gyazo.com/d7515286a8241d95b09553e29406e582
标签: ruby-on-rails ruby simple-form nested-attributes