我在Rails 4中制作一个应用程序。我使用简单表单来创建表单。Rails简单表单从数组中选择 - 多态关联
我有一个配置文件模型和组织模型。
的关联是:
profile.rb
has_one :organisation, as: :orgable
organisation.rb
has_many :profiles
在我的组织表,我有一个名为属性:org_type。
在我的组织形式,我要求用户从组织类型的数组中选择:
<%= f.input :org_type, :label => "Organisation type", collection: [ "University", "Research Organisation", "Company"] %>
在我的个人资料的形式,我想问问他们在研究,UNI用户。
我想使用在组织模型中创建的大学数组。
我有一个范围,我的组织模型筛选出大学:
scope :all_uni, -> { where(org_type: 'University') }
在我的个人资料表格,我有:
<%= f.input :institution, :label => "Graduated from" %>
但是,这只是有一个文本字段。
我试图用我的表单中的一个选择函数来替换该行,它引用了我的组织模型范围all_uni。它看起来像这样:
<%= f.select(:institution, @organisation.all_uni.title.map { |value| [ value, value ] }) %>
它给这个错误:
undefined method `all_uni' for nil:NilClass
我不明白这是什么错误消息意味着,但我也不能确定我是在正确的轨道上表单选择字段。任何提示,看看在哪里得到这个工作。我不知道如何去设置选择领域的第一个地方?
另一种尝试:
我已经在我的个人资料的形式使用,这也试过:
<%= f.select(:institution, @organisation.all_uni.title) %>
,但我得到了同样的错误。我必须走出轨道 - 我已经用尽了所有我能找到的选择。
另一种尝试
我发现这个职位 Rails Simple Form custom association select field
以在该解决方案的例子,我想:
<%= f.input :institution do %>
<%= f.select :institution, Profile.Organisation.all_uni.map{ |l| [l.title {:title => l.title.titlecase}] } %>
<% end %>
但是,我得到这个语法错误。我尝试删除=>但不断收到更多的语法错误。
syntax error, unexpected =>, expecting '}' ...i.map{ |l| [l.title {:title => l.title.titlecase}] });@out... ...^
嗨恶意软件。谢谢。在模型是多态时需要额外的位。无论如何非常感谢。 – Mel