魔法のラインは
<%= 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つのフィールドのみが必要です。
id
->選択したトークンごとに、これはフォームと一緒に投稿されます
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]}%")
最初のものを削除%
しますが、実際にはデータ型とすべてに依存します。