使用另一个表中的实时数据创建了下拉菜单



我有一个病人表和一个治疗表。相当标准。在处理表中,我有几个字符串字段,它与任何内容都无关。让我们现在就到此为止(我想这将是必要的)。然后患者表与用户是相关的,但我认为这不相关。

我想做的是在创建治疗时,获得当前患者的下拉列表,以显示在表单中。因此,treatment_form将显示当前患者的下拉列表。创建患者的方式非常简单——用户必须登录,然后他们使用CRUD方法创建患者(该表中基本上只有一个名称:字符串和电话:字符串)。所以我只想让这些名字出现在治疗表格的下拉列表中

话虽如此,我意识到治疗区域需要与患者区域建立关系。所以我已经做好了所有的准备,让我们直接进入实施以及我迄今为止所做的工作。

到目前为止,我所做的一切都是以硬编码的方式设置的。现在我需要帮助让它动态地工作。这是硬编码版本:

处理形式:

<%= f.label "Client or Patient Name:" %>
<%= f.collection_select :patient, Treatment::PATIENTS, :to_s, :titleize %>

In Treatment模型:

PATIENTS = %w[John Jim Max Cathy]
def role_symbols
[patient.to_sym]
end

当然,我将patient:string列添加到治疗表中,以使其发挥作用。但这效果很好。现在我只想让PATIENTS数组有实时数据。我注意到在模型中,你不能做像PATIENTS=%w[Ppatient.all]这样的事情,那么我该怎么做呢?

如有任何帮助,我们将不胜感激。

app/views/treatments/_form.html.erb:中

<%= f.collection_select(:patient_id, Patient.all, :id, :name) %>

应该给你一个所有患者的下拉列表

参见:

  • http://guides.rubyonrails.org/form_helpers.html#option-标签-来自仲裁对象集合
  • http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-collection_select

最新更新