1

У меня есть функция, где пользователям нравится/не нравится и не нравится/не нравится. Это, как я изначально есть мои настройки действия:Использование метода 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 

Действие завершается но изменения на стороне, обращенной к пользователю, отражаются только при обновлении. Что я делаю не так?

+4

Я думаю, вам следует позвонить @ dish.liked_by current_user, прежде чем сделать частичным –

+0

Ах, что сделал трюк. Не стесняйтесь публиковать это как решение. –

ответ

1

Я думаю, вы должны позвонить @dish.liked_by current_user до render partial: "dishes/shared/vote.js.erb". Проблема в том, что @dish еще не обновлен.

Смежные вопросы