我的模型Navigation
具有多态target
。 target
可以是Page
,ExternalLink
或Plugin
。每个目标都有不同的属性(页面包含content
,title
,外部链接包含title
,url
,插件具有自己的多态关系。
我正在构建一个小表单来添加一个导航链接,我想让我的用户选择这些关系中现有的一个(这很容易,只是一个分组的集合选择),但是我也想让他们选择一个新的'每个target
模型的选项。
问题是 - 如何以相同的形式包含它?
我可以创建一个表单对象,但这感觉就像是最后的选择。我知道我可以接受target
的嵌套属性,但我也不知道如何使用选择表单来做到这一点。我知道我可以做一些js hackery在选择或不选择新的&选项。
所有这些都没有感受到铁路。这个问题感觉就像一个不常见的问题,我想这是一个解决的问题,我试图重新发明轮子。我错过了什么选择?有什么方法可以做到这一点?
答案 0 :(得分:1)
你可能想看看Cocoon gem,会处理很多" js hackery"你提到了。
This post展示了如何使用Cocoon为(在您的情况下)每个可能的target
类呈现相应的字段。
您是否为每个目标类都有一个单独的按钮取决于您。
答案 1 :(得分:0)
我认为你应该使用globalid
gem。
以下是描述其工作原理的good article。
GlobalID可帮助您唯一识别模型。例如。 gid://Company/1
和gid://Employee/1
具有相同的ID,但具有不同的GlobalID。您只需使用GlobalID::Locator
:
GlobalID::Locator.locate gid_value
这应该可以使简单的组合框易于编程。