0

フィールドで tokeninput プラグインを実行しようとしています。

まず第一に、チュートリアルは主に別の関連付けられたモデルからの ID の追加に関するものです。私はそれをしたくありませんが、私自身のモデル (テーブル) のフィールドを使用するだけtagsです。

現在、入力すると /notes/tags.json ajax 呼び出しが実行されますが、何も返されません。正しく実行していますか?

コントローラ:

class NotesController < ApplicationController
  helper_method :sort_column, :sort_direction
  respond_to :html, :json

  def index
    @notes = Note.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page])
    @tag = Note.where('tag LIKE ?', "%#{params[:q]}%")
  end

モデル:

class Note < ActiveRecord::Base
  attr_accessible :name, :tag

  def self.search(search)
    if search
      where('name LIKE ?', "%#{search}%")
    else
      scoped
    end
  end
end
4

1 に答える 1

1

わかりました: これは大雑把ですが、jquery オートコンプリートを使用した実用的な例です

https://github.com/glennmartinez/QaBase/pull/1

手順は次のとおりです。

  • json リクエストに応答するルートを作成します (index アクションをハイジャックしました)
  • data-autocomplete-sourceテキスト フィールドの属性で、パスまたはデータ自体を宣言します。<%= f.text_area :my_token_field, 'data-autocomplete-source' => features_path
  • ID を参照するフィールドにアタッチする JavaScript を作成します (これについては html ソースを確認してください)。
  • フォームを送信し、ロガーでリクエスト後のハッシュを検査しbefore_save、フィールドを機能させるために必要な変換を実行します。

TOKENINPUT を使用してhttp://railscasts.com/episodes/258-token-fieldsに従い 、プラグイン ページの例を見ると、データがこの形式であることが期待されます

[
  {"id":"856","name":"House"},
  {"id":"1035","name":"Desperate Housewives"},
  ...
]

IDで異な​​るものを参照することで、同じハッシュを作成できます..たとえば

Notes.all.map { |n| {:id => n.tag, :name => n.name } }.to_json

次のようなものが生成されます。

[
  {"id":"tagname","name":"House"},
  {"id":"othertagname","name":"Desperate Housewives"},
  ...
]

次に、タグ名でテーブルを検索するように応答フィールドに指示できます。

もちろん、1 つのレコードのみを返すように管理するには、これらに何らかの一意性を作成する必要があります。

これが役立つことを願っています。

于 2012-06-09T06:45:31.050 に答える