Мой существующий session_controller использует встроенный выход javascript в root_path следующим образом:
render inline: "<script>window.location.replace('#{url}')</script>"
Он работал в Rails 4, но не в Rails 5. В большинстве документов говорится о вызове javascript в представлении.Но это контроллер.Из того, что я понимаю, я должен заменить на
render :js => "myNewJavascriptFunction();"
, который я пытался создать myNewJavascriptFunction () в другом файле, например: views / session / create.js.erb, в котором есть ошибка
неопределенный метод `myNewJavascriptFunction 'для
Справка:
- Как или как поместить javascript в views / session / create.js.erb
- Можем ли мы поместить javascript в ресурсы для работы с контроллером и как.
Вот мои существующие коды: В SessionsController
def create
auth = request.env["omniauth.auth"]
user = User.from_omniauth(auth)
session[:user_id] = user.id
if params.permit[:remember_me]
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
# render :js => refresh(root_path) #not work
# redirect_to root_path #not work with JQM
render inline: "<script>window.location.replace('#{url}')</script>" #not work with Rails 5
rescue
render inline: "<script>window.location.replace('#{url}')</script>" #not work with Rails 5
end
views / session / create.js.erb
function refresh(url='/') {
window.location.replace(\'#{url}\');
}
вызов по меню
- if login?
%li
%a{"data-panel" => "main", :href => logout_path, "data-ajax"=>"false"} Sign Out
- else
%li
%a{:href=>new_session_path, "data-panel" => "main"} Sign In
%li
%a{:href=>new_identity_path, "data-panel" => "main"} Sign Up
%li
= link_to "Refresh", "#", :onclick=>"window.location.replace('/')"
- if !login?
= link_to image_tag( 'facebook-sign-in-button.png'), '/auth/facebook', rel: "external"