2

我有模型公司、人员和任务。公司有很多任务,人有很多任务,任务属于公司,任务属于人。所以它们之间存在多态关联。我想创建一个用于添加新任务的表单,我可以在其中选择公司或个人作为任务所属的。我正在寻找与多态关联一起使用的自动完成输入之类的东西。有没有普遍使用的解决方案?

更新

我现在正在尝试使用 TokenInput。但是它有一个非常奇怪的问题。我为 Company 和 Person 模型写过:

def token
  "#{id}_#{self.class.name}"
end

然后我像这样渲染contacts.json

[
    {"name":"My company","token":"1_Company"},
    {"name":"The Person","token":"1_Person"}
]

然后我初始化 TokenInput:

$('.token-input').tokenInput '/contacts.json'
    tokenLimit: 1
    tokenValue: "token"

自动完成工作得很好,但它发送到 params 空字符串!最奇怪的是:当我将它添加到 tokenInput 选项时:

propertyToSearch: "token"

有用!我的意思是,值“联系人:1_Person”出现在参数中。但它破坏了我输入的外观,因为自动完成中有“1_Person”、“1_Company”值而不是“My company”、“The Person”。也许有人知道如何解决它?

更新 2

哦哇!我从 github 下载了 TokenInput 的最新版本(我之前从 loopj.com 下载过),它可以工作了!

尽管如此,知道其他解决方案会很好。

4

1 回答 1

0

我不知道任何通用解决方案,但我的 2 美分用于:TokenInput。服务器返回类似:

[
   {"id":"3", "name":"Mark", "item_type": "Person" },
   {"id":"34", "name":"IBM",  "item_type": "Task"}
]

客户端您必须构建一个隐藏的输入字段来存储 item_type。那就是。如果 Person 和 Company 具有相同的 id,则存在一些问题,但可以通过在 id 字段中使用前缀并在发送之前使用 javascript 剥离该前缀来解决(BIG HACK)。

或者,也许您可​​以简单地使用两个不同的输入字段。

在 github 上搜索我发现了这个插件Rails-token-input但我不知道。

于 2012-06-23T11:27:42.483 回答