0

この状況でjson配列を解析する方法があるかどうか疑問に思っていました。スタックオーバーフローのタグテキストフィールドと非常によく似た、タグテキストフィールドのオートコンプリートを行っています。その特定のタグに関連付けられたカウントが必要でした。

私の見解の1つでは、私は...

<div class="tags">
    <%= f.label :tag_name, "Tags" %>
    <%= f.text_field :tag_name, data: { autocomplete_source: tags_path} %>
</div>

次に、私の article.js.coffee を呼び出します

jQuery ->
    $('#article_tag_name').autocomplete
        source: $('#article_tag_name').data('autocomplete-source')

そして私のタグコントローラーには...

def index
    @tags = Tag.order(:name).where("name like ?", "%#{params[:term]}%")
    render json: @tags.map{|tag| "#{tag.name} x #{tag.count}"}
end

コードは機能し、ajax を使用してタグ テーブルからタグ (およびそのカウント) を取得できます。

ただし、記事のモデルファイルにあるこのコードもあります

def tag_name=(name)
    self.tag = Tag.find_or_create_by_name(name) if name.present?
end

タグが存在しない場合は、ユーザーがタグを作成できるようにします。私が遭遇する問題はこれです...タグは現在「Java x 1」とラベル付けされており、ユーザーがそのタグを選択すると、データベースには「Java」だけではなく独自のタグとして「Java x 1」が含まれるようになりました.

json配列を解析する別の方法、またはjqueryが名前とカウントを個別に処理する方法はありますか?

申し訳ありませんが、このjsonとjqueryのすべてにまだ慣れていません。レールキャストをフォローしていました。助けてくれてありがとう=)

4

1 に答える 1

2

オートコンプリート アクションは次のようにレンダリングする必要があります

render json: @tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }
于 2012-04-16T17:56:09.460 に答える