gpt4 book ai didi

ruby-on-rails - Ruby on Rails,一种形式的两种模型

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:18 26 4
gpt4 key购买 nike

我有两个非常相似的模型 Pretreatment 和 Diagnosis,属于模型 Patient:

class Pretreatment < ActiveRecord::Base
belongs_to :patient
attr_accessible :content
end

class Diagnosis < ActiveRecord::Base
belongs_to :patient
attr_accessible :content
end

class Patient < ActiveRecord::Base
attr_accessible :age, :name, :city, :street, :number
has_many :anamneses
has_many :befunds
end

Patient 显示页面上,我显示了两种形式,一种用于预处理,另一种用于诊断:

<%= form_for([@patient, @patient.preatreatments.build]) do |f| %>
<div class="field">
<%= f.label :conten %><br />
<%= f.text_field :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

<%= form_for([@patient, @patient.diagnosiss.build]) do |f| %>
<div class="field">
<%= f.label :content %><br />
<%= f.text_field :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

我的问题是如何将这两个表单放在一起,以便用户只需按一次提交按钮?我不确定,但我认为嵌套属性不是处理它的正确方法,也许是 fields_for` 标签?

更新 我尝试使用 fields_for 标签:

   <%= form_for([@patient, @patient.pretreatment.build]) do |f| %>
<div class="field">
<%= f.label :content %><br />
<%= f.text_field :content %>
</div>
<%= fields_for([@patient, @patient.diagnosiss.build]) do |u| %>
<div class="field">
<%= u.label :content %><br />
<%= u.text_field :content %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

但是我得到了错误:

undefined method `model_name' for Array:Class in <%= fields_for([@patient,@patient.befunds.build]) do |u| %>

最佳答案

对关联模型使用fields_for
fields_for 的参数不应该有方括号

在你的代码示例中,我找不到PatientDiagnosis之间的关系,而diagnosis的复数形式是diagnoses,你可以指定这在 config/initializers/inflections.rb 中:

ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'diagnosis','diagnoses'
end

所以你的Patient模型应该包含

class Patient < ActiveRecord::Base
attr_accessible :age, :name, :city, :street, :number
has_many :diagnoses
end

你可以在你的表单中写:

 <div class="field">
<%= f.label :content %><br />
<%= f.text_field :content %>
</div>
<%= fields_for(@patient, @patient.diagnoses.build) do |u| %>
<div class="field">
<%= u.label :content %><br />
<%= u.text_field :content %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>

关于ruby-on-rails - Ruby on Rails,一种形式的两种模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131395/

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