Я отрисовка частица js.erb, которая позволяет функции ajax любить/не нравится блюдо в ресторане. Недавно я столкнулся с обратным вызовом around_action
, и фигура yield
помогла бы сначала выполнить действие контроллера и отобразить второй. К сожалению, я получаю 500 (Internal Server Error)
из-за того, что respond_to
никогда не будет вызван.Предоставление вида действия контроллера из обратного вызова around_action
Метод respond_to
работает, если я помещаю его внутри действия контроллера, но не внутри обратного вызова. Что я делаю не так?
class DishesController < ApplicationController
before_action :set_dish_and_restaurant
around_action :render_vote_partial
def like
@dish.liked_by current_user
end
...
private
def set_dish_and_restaurant
@dish = Dish.find(params[:id])
end
def render_vote_partial
yield
respond_to { |format| format.js { render "vote.js.erb" } }
end
end
Console Ошибка
ActionView::MissingTemplate (Missing template dishes/like, application/like with {:locale=>[:en], :formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/app/views"
* "/Library/Ruby/Gems/2.0.0/gems/devise-3.5.1/app/views"
):
app/controllers/dishes_controller.rb:29:in `render_vote_partial'
Вы можете отправить сообщение об ошибке стека исключений, которое вы получите на консоли, пожалуйста? – Shaunak
Действие вызывается до, после или вокруг рендеринга ... Это не рендеринг ... Ответы всегда должны быть в действиях. –
Правда, попытка сделать из around_action плохая конструкция, однако я пытаюсь понять, если технически это запрещено. Который я имел доступ к моей машине dev прямо сейчас, чтобы попробовать. – Shaunak