3

ここにあるjquerytokeninputを使用しようとしています:http: //loopj.com/jquery-tokeninput/ railcastsのガイドに従ってください:http://railscasts.com/episodes/258-token-fields

デフォルトでは、table/jsonに「name」列が必要でした。

それを別のもの(私の場合は'account_number')に変更するためにカスタマイズする方法はありますか?

(reailcastで、「名前」列がない場合は、追加のカスタマイズが必要になると彼は言います)

4

2 に答える 2

6

魔法のラインは

<%= f.text_field :author_tokens, "data-pre" => @book.authors.map(&:attributes).to_json %>

format.json { render :json => @authors.map(&:attributes) }

これらの行は、テーブルから読み取られたデータをjquery-tokeninputが理解できるjsonに変換します。モデルからのすべてのデータをjquery-tokeninputに渡しますが、必須ではありません。Tokeninput、2つのフィールドのみが必要です。

  1. id->選択したトークンごとに、これはフォームと一緒に投稿されます
  2. name->トークンのラベルとして使用

nameモデルにフィールドを設定せずaccount_number、ラベルとして使用する場合は、次のように実行できます。

<%= f.text_field :author_tokens, "data-pre" => @book.authors.collect {|author| {:id => author.id, :name => author.account_number } } %>

format.json { render :json => @authors.collect {|author| {:id => author.id, :name => author.account_number } }

基本的に、tokeninputに渡されるjsonを変更します。accoun_numberとして渡しますname

アップデート:

この行を自分に合ったものに変更します。

@authors = Author.where("name like ?", "%#{params[:q]}%")

1つの提案は次のとおりです。

@authors = Author.where("name like ?", "#{params[:q]}%")

最初のものを削除%しますが、実際にはデータ型とすべてに依存します。

于 2011-07-25T17:20:15.433 に答える
2

「propertyToSearch」オプションを追加するだけです:

$(function() {
  $("#user_tokens").tokenInput("/users.json", {
    crossDomain: false,
    propertyToSearch: "account_number",
    theme: "facebook",
  });
});
于 2013-04-26T12:03:27.197 に答える