我在constant.rb文件中的所有常量都在initalizers文件夹中。
我有两个模型:样本和患者。样本只能有一名患者,但患者可以有几个样本。
在我想使用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 ) %>
但它为'Sim'返回一个“未定义的方法`patientFeeding':字符串”错误......我做错了什么?
实现这一目标的最佳方法是什么?
修改
我已经看到我应该只使用select而不是collection_select,因为我没有从数据库中获取值。所以我尝试了这个:
select(:patient, :patientFeeding, ALIMENTOS)
我收到此错误:
undefined method `merge' for ["Sim", "Nao", "Desconhecido", "Nao preenchido"]:Array
这似乎是一个简单的映射错误......但过去两天我一直坚持下去......任何人都可以提供帮助吗?
答案 0 :(得分: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 } %>
集合输入can be found here的源代码。
我发现this project是simple_form
例子的重要来源。