У меня есть WEBGL-плеер, встроенный в статическую страницу рельсов, как 'demo_path', как показано ниже:
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user, url: signup_path) do |f| %>
<%= render 'shared/error_messages' %>
<%= link_to "mindpass", demo_path, class: "btn btn-lg btn-primary"
%>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
Когда пользователь нажимает кнопку, он загружает шаблон webgl:
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8">
<title>Unity WebGL Player | MindPass_DEMO</title>
<script src="Build/UnityLoader.js"></script>
<script>
var gameInstance = UnityLoader.instantiate("gameContainer",
"/assets/Build/MindPass_WEBGL_RY2.json");
</script>
</head>
<body>
<div id="gameContainer" style="width: 90%; height: 90%; position:
absolute; margin: auto;"></div>
</body>
</html>
Это успешно загружается и фактически запускает контроллер пользователей для сохранения нового пользователя и инициирует 'redirect_to @users', как показано в следующем коде users_controller:
def create
puts "create runs"
#puts params.inspect
@user = User.new(user_params)
if @user.save
puts "user save runs"
log_in @user
puts "second welcome to your vault(users_cont)"
flash[:success] = "Welcome to your vault!"
redirect_to @user
else
puts "render new runs"
render 'new'
end
end
Проблема в том, что перенаправление на самом деле не происходит. Вот журнал попытки, включая перенаправление:
2018-11-07T05: 04: 21.897020 + 00:00 приложение [web.1]: I,
[2018-11-07T05: 04: 21.896891 # 20] ИНФОРМАЦИЯ -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Началось POST "/ регистрация" для
76.120.71.73 в 2018-11-07 05:04:21 +0000 2018-11-07T05: 04: 21.898131 + 00: 00 app [web.1]: I,
[2018-11-07T05: 04: 21.898049 # 20] ИНФОРМАЦИЯ -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Обработка с помощью
UsersController # создать как / 2018-11-07T05: 04: 21.901161 + 00: 00
app [web.1]: I, [2018-11-07T05: 04: 21.901036 # 20] INFO -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Параметры:
{"EMAIL" => "jakeywtf34@gmail.com", "PASSWORD" => "[FILTERED]"}
2018-11-07T05: 04: 21.902007 + приложение 00: 00 [web.1]: W,
[2018-11-07T05: 04: 21.901922 # 20] ПРЕДУПРЕЖДЕНИЕ -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Не удается проверить токен CSRF
подлинность. 2018-11-07T05: 04: 21.907902 + 00: 00 приложение [web.1]: создание прогонов
2018-11-07T05: 04: 21.907965 + 00: 00 приложение [web.1]: user_params запускается
2018-11-07T05: 04: 21.908031 + 00: 00 app [web.1]: если не указано состояние
user_params 2018-11-07T05: 04: 22.141541 + 00:00 приложение [web.1]: D,
[2018-11-07T05: 04: 22.141393 # 20] DEBUG -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] [1 м [35 м (5,0 мс) [0 м]
[1m [35mBEGIN [0m 2018-11-07T05: 04: 22.145580 + 00: 00 app [web.1]: D,
[2018-11-07T05: 04: 22.145463 # 20] DEBUG -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] [1 м [36mUser Exists]
(2,5 мс) [0 м [1 м [34 м ВЫБРАТЬ 1 КАК ОТ «пользователей» ГДЕ
LOWER ("users". "Email") = LOWER ($ 1) LIMIT $ 2 [0m [["email",
"jakeywtf34@gmail.com"], ["LIMIT", 1]]
2018-11-07T05: 04: 22.149368 + 00:00 приложение [web.1]: D,
[2018-11-07T05: 04: 22.149270 # 20] DEBUG -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] [1 м [35mSQL (2,1 мс) [0 м]
[1m [32mINSERT INTO "users" ("email", "creation_at", "updated_at",
"password_digest") ЗНАЧЕНИЯ ($ 1, $ 2, $ 3, $ 4) ВОЗВРАЩАЯ "id" [0m
[["email", "jakeywtf34@gmail.com"], ["creation_at", "2018-11-07
05: 04: 22.146010 "], [" updated_at "," 2018-11-07 05: 04: 22.146010 "],
[ "Password_digest",
"$ 2a $ 10 $ g.RhGJDfl23 / zPDeyXEI.OcnsfKfYH3jE4GB7py6 / ktMJ3N6y73OW"]]
2018-11-07T05: 04: 22.153387 + приложение 00:00 [web.1]: D,
[2018-11-07T05: 04: 22.153287 # 20] DEBUG -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] [1 м [35 м (3,5 мс) [0 м]
[1m [35mCOMMIT [0m 2018-11-07T05: 04: 22.153528 + 00: 00 app [web.1]: пользователь
прогоны сохранения 2018-11-07T05: 04: 22.153618 + 00:00 приложение [web.1]: второе приветствие
в ваше хранилище (users_cont) 2018-11-07T05: 04: 22.154318 + 00: 00 приложение [web.1]:
Я,
[2018-11-07T05: 04: 22.154239 # 20] ИНФОРМАЦИЯ -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Перенаправлено на
https://immense -castle-53592.herokuapp.com / пользователи / 126
2018-11-07T05: 04: 22.154585 + 00:00 приложение [web.1]: I,
[2018-11-07T05: 04: 22.154507 # 20] ИНФОРМАЦИЯ -:
[c5de6e8e-58e2-4177-ae17-e1f58fbb65ee] Завершено 302 Найдено за 253 мс
(ActiveRecord: 13.0ms) 2018-11-07T05: 04: 22.221827 + 00: 00 app [web.1]: I,
[2018-11-07T05: 04: 22.221705 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Запущен GET "/ users / 126" для
76.120.71.73 в 2018-11-07 05:04:22 +0000 2018-11-07T05: 04: 22.229274 + 00:00 приложение [web.1]: I,
[2018-11-07T05: 04: 22.229112 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Обработка с помощью
UsersController # отображается как / 2018-11-07T05: 04: 22.230258 + 00: 00
приложение [web.1]: I,
[2018-11-07T05: 04: 22.230174 # 6] ИНФОРМАЦИЯ -:[972376e5-2f11-4985-91fe-53b071181359] Параметры: {"id" => "126"}
2018-11-07T05: 04: 22.156370 + 00:00 геройку [роутер]: at = метод info = POST
путь = "/ регистрация" хост = immense-castle-53592.herokuapp.com
request_id = c5de6e8e-58e2-4177-ae17-e1f58fbb65ee fwd = "76.120.71.73"
dyno = web.1 connect = 1ms service = 264ms status = 302 bytes = 559
протокол = https 2018-11-07T05: 04: 22.419460 + 00:00 приложение [web.1]: D,
[2018-11-07T05: 04: 22.419270 # 6] DEBUG -:
[972376e5-2f11-4985-91fe-53b071181359] [1 м [нагрузка на 36 м
(6,4 мс) [0 м [1 м [34 мВЫБРАТЬ «пользователи». * ОТ «пользователей» ГДЕ
"users". "id" = $ 1 LIMIT $ 2 [0m [["id", 126], ["LIMIT", 1]]
2018-11-07T05: 04: 22.469417 + 00:00 приложение [web.1]: I,
[2018-11-07T05: 04: 22.469246 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Рендеринг пользователей / show.html.erb
в макетах / заявка 2018-11-07T05: 04: 22.470569 + 00: 00
приложение [web.1]: I,
[2018-11-07T05: 04: 22.470487 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Предоставленные пользователи / show.html.erb
в макетах / приложении (1,0 мс) 2018-11-07T05: 04: 22,484847 + 00: 00
приложение [web.1]: I,
[2018-11-07T05: 04: 22.484727 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Предоставлено
layouts / _rails_default.html.erb (4,8 мс)
2018-11-07T05: 04: 22.497488 + 00: 00 app [web.1]: I,
[2018-11-07T05: 04: 22.497361 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Предоставлено
макеты / _shim.html.erb (0,5 мс) 2018-11-07T05: 04: 22,526778 + 00: 00
приложение [web.1]: я,
[2018-11-07T05: 04: 22.526644 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Предоставлено
layouts / _header.html.erb (12.1ms) 2018-11-07T05: 04: 22.540219 + 00: 00
приложение [web.1]: I,
[2018-11-07T05: 04: 22.540092 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Предоставлено
layouts / _footer.html.erb (1.0ms) 2018-11-07T05: 04: 22.541427 + 00: 00
приложение [web.1]: я,
[2018-11-07T05: 04: 22.541342 # 6] ИНФОРМАЦИЯ -:
[972376e5-2f11-4985-91fe-53b071181359] Завершено 200 OK за 311 мс
(Просмотры: 83,8мс | ActiveRecord: 103,3мс)
2018-11-07T05: 04: 22.544712 + 00:00 геройку [роутер]: at = метод информации = GET
путь = "/ users / 126" host = immense-castle-53592.herokuapp.com
request_id = 972376e5-2f11-4985-91fe-53b071181359 fwd = "76.120.71.73"
dyno = web.1 connect = 1 мс сервис = 324 мс статус = 200 байт = 2692
протокол = HTTPS
Когда я делаю это с обычными формами ввода, как показано ниже, происходит тот же журнал перенаправления, и он на самом деле переходит на страницу пользователей .:
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
Кажется, что WEBGL блокирует эту штуку и отказывается перенаправлять страницу, даже если это должно происходить . Чего мне не хватает?
ОБНОВЛЕНИЕ 12-6-18:
Я заметил, что когда WEBGL инициирует перенаправление (безуспешно), я получаю это в журнале: Обработка UsersController # показывается как / . Если я перенаправляю из обычной HTML-формы (успешно), я получаю это в журнале: Обработка UsersController # показывать как HTML. Это единственное отличие в логах.
Я проверил следующее:
- Протестировано с несколькими браузерами, чтобы определить, является ли оно специфичным для определенных
- Протестировано с изменением URL-адреса перенаправления на https://www.google.co.uk/ для проверки успешности перенаправления
- Добавлено условие, обеспечивающее завершение перенаправления перед продолжением работы со сценариями
- Попытка тестирования Heroku через LocalHost (все еще не продолжалась)
К сожалению, ни один из этих тестов не дал каких-либо показательных результатов.
Применимый код UnityWebRequest C # из игры. Экземпляр:
phase4 = true;
Invoke ("QuitGame", 10f);
}
}
private IEnumerator Connection ( string name )
{
WWWForm form = new WWWForm ();
form . AddField ( "EMAIL" , _email );
form . AddField ( "PASSWORD" , passwordUnityEncrypted );
form . AddField ( "HOST_URL" , absoluteURL );
form . AddField ( "SIGNUP_PATH" , _url_signup_route );
form . AddField ( "LOGIN_PATH" , _url_login_route );
if (absoluteURL == _url_signup){
UnityWebRequest request = UnityWebRequest . Post (
_url_signup_route , form );
yield return request . Send ();
} else{
UnityWebRequest request = UnityWebRequest . Post (
_url_login_route , form );
yield return request . Send ();
}