我正在使用Rails 4创建一个应用程序。我使用Simple Form表示。
我有个人资料模型和组织模型。
协会是:
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"] %>
在我的个人资料表格中,我想问用户他们在哪个单位学习。
我想使用在组织模型中创建的大学数组。
我的组织模型中有一个范围可以过滤掉大学:
scope :all_uni, -> { where(org_type: 'University') }
在我的个人资料表格中,我有:
<%= f.input :institution, :label => "Graduated from" %>
但这只是一个文本字段。
我试图在我的表单中创建一个select函数来替换该行,该函数引用了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 %>
但是,我得到这个语法错误。我试过删除=&gt;但不断收到更多的语法错误。
syntax error, unexpected =>, expecting '}' ...i.map{ |l| [l.title {:title => l.title.titlecase}] } );@out... ... ^
答案 0 :(得分:0)
不是一个完整的答案,但据我所知,如果你有2个模型,那么而不是使用
profile.rb
has_one :organisation, as: :orgable
organisation.rb
has_many :profiles
您只需使用
即可profile.rb
belongs_to :organisation
organisation.rb
has_many :profiles