【发布时间】:2020-07-19 06:57:57
【问题描述】:
我有两个模型
class Owner < ActiveRecord::Base
has_many :dogs
end
class Dog < ActiveRecord::Base
belongs_to :owner
accepts_nested_attributes_for :owner
before_validation :set_name
private
def set_name
self.name = owner.name
end
end
在提交表单后(因此调用 before_validation :set_name),我想将 Dog name 更新为 Owner name。
此外,我的问题是:self.name = owner.name 的正确格式是什么?
我的表单如下所示:
<h1>Create a new Dog:</h1>
<%= form_for(@dog) do |f|%>
<div>
<%= f.label :breed%>
<%= f.text_field :breed%>
</div><br>
<div>
<%= f.label :age%>
<%= f.text_field :age%>
</div><br>
<div>
<h3>Create a new owner:</h3>
<%= f.fields_for :owner, Owner.new do |owner_attributes|%>
<%= owner_attributes.label :name, "Owner Name:" %>
<%= owner_attributes.text_field :name %>
<% end %>
</div>
<%= f.submit %>
<% end %>
您可以看到 Dog 没有名称的 text_field,这是因为我希望所有者名称是狗的名称。感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails ruby forms model form-for