У меня есть вход, где я слушаю:
const shopFilterProductsInput = document.getElementById("shopFilterProducts");
Я бью бэкэнд в каждом бейпе (это в файле веб-пакета)
const filterOffers = (e) => {
let inputValue = shopFilterProductsInput.value;
const url = `/shops/${shopId}?query=${inputValue}`;
fetch(url, {
method: "GET",
headers: {
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/javascript",
'Accept': 'application/javascript',
"X-CSRF-Token": csrfToken,
"authenticity_token": csrfToken
}
})
.then(function() {
console.log("response back fetch api")
})
}
if (shopFilterProductsInput) {
shopFilterProductsInput.addEventListener("keyup", filterOffers)
}
В бэкэндеЯ указываю ответ, который я хочу для формата js
def show
set_shop
set_user
set_category
# @shop.nil? != true ### ?????
@shop = Shop.find(params[:id])
query = params[:query]
if query
@offers = @shop.offers.search_by_model_and_brand_generic_product_name(query)
binding.pry
respond_to do |format|
format.html { render 'shops/show' }
format.js
end
else
@offers = @shop.offers
end
end
, и у меня есть соответствующий show.js.erb
файл
console.log("filtering pg show.js.erb");
const shopOffersPartial = document.getElementById("shopOffersPartial");
console.log(shopOffersPartial);
const newContent = '<%= j render "shops/shop_offers", offers: @offers %>';
shopOffersPartial.innerHTML = newContent;
, который обновит содержимое партиала в show.html.erb:
<div id="shopOffersPartial">
<%= render "shops/shop_offers", offers: @offers %>
</div>
К сожалению, я никогда не вижу это сообщение.Я просто вижу ответ fetch:
response back from the FETCH api
Журнал GET выглядит следующим образом:
Started GET "/shops/1?query=j" for 127.0.0.1 at 2019-03-04 00:47:48 +0100
Processing by ShopsController#show as JS
Parameters: {"query"=>"j", "id"=>"1"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /Users/albert/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
Shop Load (0.4ms) SELECT "shops".* FROM "shops" WHERE "shops"."user_id" = $1 LIMIT $2 [["user_id", 1], ["LIMIT", 1]]
↳ app/controllers/shops_controller.rb:92
Offer Load (0.4ms) SELECT "offers".* FROM "offers" WHERE "offers"."shop_id" = $1 [["shop_id", 1]]
↳ app/controllers/shops_controller.rb:92
Shop Load (0.6ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/shops_controller.rb:50
Rendering shops/show.js.erb
Rendered shops/show.js.erb (0.4ms)
Completed 200 OK in 34ms (Views: 17.0ms | ActiveRecord: 1.8ms)
Мне удается выполнить запрос в формате js, мне удается отобразить shops/show.js.erb
, но почему-то я не вижу сообщения в консоли.
Я даже вижу ответ в Chrome DevTools:

Любая помощь?
Я также попробовал это:
jQuery + Ajax + Haml.Файлы js.erb не запускаются