1

我在 initalizers 文件夹中的 constant.rb 文件中拥有所有常量。

我有两个模型:样本和患者。样本只能有一名患者,但患者可以有多个样本。

当我想使用 constants.rb 的其中一个常量时,在新示例表单上,我做了一个简单的选择:

<%= f.select :consentimentoContacto, DESCONHECIDO %>

而且效果很好。

当我想使用患者模型中的字段时,我使用 collection_select:

<%= f.collection_select(:patientID, Patient.all, :id, :date_of_birth ) %>

而且它也可以正常工作...

我现在想做的是在新的样本表单上使用与患者模型相关的常数之一......

常数是:

ALIMENTOS = ['Sim', 'Nao', 'Desconhecido', 'Nao preenchido']

我以为我可以做这样的事情:

<%= f.collection_select(:patientID, ALIMENTOS, :id, :patientFeeding ) %>

但它返回一个“未定义的方法 `patientFeeding' for 'Sim':String” 错误......我做错了什么?

实现这一目标的最佳方法是什么?

编辑

我已经看到我应该只使用 select 而不是 collection_select,因为我没有从数据库中获取值。所以我尝试了这个:

select(:patient, :patientFeeding, ALIMENTOS)

我得到这个错误:

undefined method `merge' for ["Sim", "Nao", "Desconhecido", "Nao preenchido"]:Array

这似乎是一个简单的映射错误......但过去两天我一直坚持......任何人都可以帮忙吗?

4

1 回答 1

2

如果要进行单个选择:

<%= f.input :patient, as: :select, collection: ["Sim", "Nao", "Desconhecido", "Nao preenchido"] %>

如果你想要多选

<%= f.input :meeting_days, as: :select, collection: ["Sim", "Nao", "Desconhecido", "Nao preenchido"], input_html: { multiple: true } %>

可以在此处找到集合输入的源代码。

我发现这个项目是一个很好的simple_form例子来源。

于 2014-02-18T16:55:00.220 回答