Я пытаюсь сделать почтовый запрос, который будет захватывать все события (джемы) и динамически обновлять страницу с помощью ajax. Таким образом, мой контроллер получает параметры в формате JSON, и я хотел бы ответить js так же, как вы делаете с remote: true для ссылки или кнопки.
Я использую rails 6.0.2.2
Это в моем. js file =>
const getJams = () => {
const mapCenter = map.getCenter();
const mapBounds = map.getBounds();
const token = document.getElementsByName("csrf-token")[0].content
fetch(window.location.origin + "/search", {
method: "POST",
headers: {
'Accept': "text/javascript",
'Content-Type': "application/javascript",
'X-CSRF-Token': token
},
body: JSON.stringify({
map_center: mapCenter,
max_lat: mapBounds._ne.lat,
min_lat: mapBounds._sw.lat,
max_lng: mapBounds._ne.lng,
min_lng: mapBounds._sw.lng
}),
credentials: "same-origin"
})
}
Метод в контроллере поиска, куда отправляются данные, выглядит следующим образом =>
def index
@jams = policy_scope(Jam)
respond_to do |f|
f.json do |f|
render json: {
jams: render_to_string(
partial: 'jams/jams',
formats: :html,
layout: false,
locals: { jams: @jams }
)
}
end
end
end
Выполнено так, внутри моего клопа есть параметры, так что это кажется правильным. Если я продолжу, мой сервер покажет мне
Completed 406 Not Acceptable in 1ms (ActiveRecord: 0.0ms | Allocations: 889)
ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/searchs_controller.rb:7:in `index'
Я бы хотел работать с этим поиском. js .erb, чтобы добавить элементы в мое представление. Хотя мой поиск. js .erb содержит просто console.log("a");
, но этот js, похоже, не выполняется. В консоли ничего не отображается.
Если бы кто-нибудь мог мне помочь, я был бы благодарен.
Вот внутренняя часть джема / _jam. html .erb частичная =>
<% jams.each do |jam| %>
<div class="jam-card">
<%= image_tag jam.photo %>
<%= jam.status %>
<%= jam.user.first_name %>
<%= jam.music_style.music_style %>
<%= display_date(jam.start_date_time, jam.duration) %>
<%= jam.participants.count %>/<%= jam.max_participants %>
</div>
<% end %>