【问题标题】:Rails Simple Form Select from Array - polymorphic associationsRails Simple Form Select from Array - 多态关联
【发布时间】:2015-12-30 05:05:40
【问题描述】:

我正在 Rails 4 中制作应用程序。我使用简单表单作为表单。

我有一个档案模型和一个组织模型。

这些关联是:

profile.rb

 has_one :organisation, as: :orgable

组织.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 %>

但是,我得到这个语法错误。我已尝试删除 =>,但不断收到更多语法错误。

syntax error, unexpected =>, expecting '}' ...i.map{ |l| [l.title {:title => l.title.titlecase}] } );@out... ... ^

【问题讨论】:

    标签: ruby-on-rails arrays scope simple-form


    【解决方案1】:

    不是一个完整的答案,但据我所知,如果你有 2 个模型,那么不要使用

    profile.rb
     has_one :organisation, as: :orgable
    
    organisation.rb
     has_many :profiles 
    

    你可以简单地使用

    profile.rb    
     belongs_to :organisation
    
    organisation.rb    
     has_many :profiles
    

    【讨论】:

    • 嗨恶意软件。谢谢。如果模型是多态的,则需要额外的位。无论如何,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多