У меня есть функция, где пользователям нравится/не нравится и не нравится/не нравится. Это, как я изначально есть мои настройки действия:Использование метода response_to для рендеринга части js.erb
Посуда Контроллер
class DishesController < ApplicationController
def like
@dish.liked_by current_user
end
def dislike
@dish.disliked_by current_user
end
...
end
Учитывая js.erb
шаблоны для каждого шаблона полностью идентичны Я хотел создать только один общий частичный, что каждый может использовать:
Оригинал установки
# like.js.erb, unlike.js.erb,dislike.js.erb,undislike.js.erb
$(".restaurant__dish-vote--<%= @dish.modifier_class %>").html('<%= escape_javascript(render "restaurants/menu_partials/dish_votes", dish: @dish) %>');
Новая настройка
# shared/_vote.js.erb
$(".restaurant__dish-vote--<%= @dish.modifier_class %>").html('<%= escape_javascript(render "restaurants/menu_partials/dish_votes", dish: @dish) %>');
Теперь я пытаюсь реорганизовать свой контроллер, чтобы отразить эти изменения, но функциональные возможности Ajax, кажется, не работает со следующим:
class DishesController < ApplicationController
def like
respond_to do |format|
format.js { render partial: "dishes/shared/vote.js.erb" }
end
@dish.liked_by current_user
end
end
Действие завершается но изменения на стороне, обращенной к пользователю, отражаются только при обновлении. Что я делаю не так?
Я думаю, вам следует позвонить @ dish.liked_by current_user, прежде чем сделать частичным –
Ах, что сделал трюк. Не стесняйтесь публиковать это как решение. –