Я пишу before_filter так:
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :partial => "js_helpers/popover", :formats => :js
else
authenticate_user!
end
end
Однако, это не работает, как ожидалось. Файл журнала показывает:
Rendered js_helpers/_popover.js.erb (0.1ms)
Filter chain halted as :authenticate_user rendered or redirected
Функция кода js состоит в отображении всплывающего блока, показывающего флэш-сообщение.
но похоже, что js-код вообще не возбужден.
Итак, я изменил свой путь:
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :js => "window.location = '/users/sign_up'"
else
authenticate_user!
end
end
Вместо этого я хочу перенаправить на страницу регистрации.
Однако проблемы все еще существуют. вспышка не работает
Как мне достичь своей цели:
когда запрос является ajax-вызовом, выполните код come javascript или перенаправьте на новую страницу. В обоих случаях мне нужно хранить некоторые сообщения во флэш-памяти.
Плюс, код javascript очень длинный, поэтому мне нужно поместить его в файл. Как я могу использовать render: js для выполнения JavaScript внутри файла?