2015-12-30 95 views
-1

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

回答

0

不是一个完整的答案,但根据我所知道的是,如果你有2种型号,然后而是采用

profile.rb 
has_one :organisation, as: :orgable 

organisation.rb 
has_many :profiles 

,你可以简单地使用

profile.rb  
belongs_to :organisation 

organisation.rb  
has_many :profiles 
+0

嗨恶意软件。谢谢。在模型是多态时需要额外的位。无论如何非常感谢。 – Mel