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"

できます!つまり、値「contact:1_Person」がパラメータに表示されます。ただし、オートコンプリートに「My company」、「The Person」の代わりに「1_Person」、「1_Company」の値があるため、入力の外観が崩れます。多分誰かがそれを修正する方法を知っていますか?

アップデート2

ああすごい!TokenInputの最後のバージョンをgithubからダウンロードしました(以前に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)。

または、2つの異なる入力フィールドを使用することもできます。

githubで検索すると、このプラグインRails-token-inputが見つかりましたが、わかりません。

だが

于 2012-06-23T11:27:42.483 に答える