Функциональность типа впереди работает там, где она должна. Проблема в том, что функциональность типа впереди делает запрос JSON для каждого запроса данных, когда он действительно должен выполняться только для одного конкретного запроса.
У меня есть следующий контроллер:
#controllers/agencies_controller.rb
class AgenciesController < ApplicationController
def get_unique_agency_names
@unique_agency_names = Agency.uniq.pluck(:name)
respond_to do |format|
format.json { render json: @unique_agency_names }
end
end
...
end
В моем файле javascript есть следующее:
#app/assets/javascripts.agencies/index.js
$(document).ready(function(){
/* For typeahead functionality on name input of search form for agencies */
var agency_names = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../agencies/get_unique_agency_names.json'
});
$('#prefetch .typeahead.name_input').typeahead(null, {
name: 'agency_names',
source: agency_names
});
});
И только для завершения, вот одно место, где я хочу, чтобы эта функциональность произошла: В этой форме:
# just showing the relevant part of the form
<div class="form-group" id="prefetch">
<%= f.label :name_cont, "Agency Name" %>
<%= f.text_field :name_cont, class: "form-control typeahead name_input", placeholder: "Enter Agency Name" %>
</div>
Вот мой соответствующий маршрут в config/routes.rb
resources :agencies do
collection do
get 'get_unique_agency_names'
end
end
Мой конкретный вопрос: как я могу гарантировать, что GET "/agencies/get_unique_agency_names"
вызывается только тогда, когда он должен? Сейчас он добавляет этот запрос JSON для каждого запроса. Я хочу, чтобы запрос JSON выполнялся только для одного конкретного запроса.