0

意見

= text_field_tag :food_tokens

食品コントローラー

def search
  @foods = Food.where("name LIKE ?" , "%#{params[:q]}%")
  respond_to do |format|
    format.json { render json: @foods.as_json(only: [:id, :name]) }
  end
end

ルート

match '/search' => 'foods#search'

アプリケーション.js

$(function() {
  $('#food_tokens').tokenInput('/search.json', { crossDomain: false }
});

/search.json からの出力

[{"id":"5","name":"Apple"},{"id":"6","name":"Burger"}]

テキスト フィールドに「Apple」と入力し始めると、「結果がありません」というメッセージが表示されます。

洞察はありますか?

4

2 に答える 2

0

.tokenInput問題は、メソッドを適切に閉じていなかったことだと思います。次のようにする必要があります。

$(function() {
  $('#food_tokens').tokenInput('/search.json', { crossDomain: false });
});
于 2013-03-01T03:02:11.870 に答える
0

大文字だからだと思います。同様の問題があり、コードを少し変更しました。まず、この SO question's answer"name LIKE ?"に従うように変更しました。第二に、私はこれの797行目を変更しました"name ILIKE ?"jquery.tokeninput.js

if(input_box.val().toLowerCase() === query) {
   populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
}

これに

if(input_box.val() === query) {
  populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
}
于 2014-01-15T10:10:15.513 に答える