使用带有simple_form的collection_select常量

时间:2013-09-28 12:32:53

标签: collections ruby-on-rails-3.2 constants

我在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

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

1 个答案:

答案 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 projectsimple_form例子的重要来源。