Rails 5-6: получить полный URL - PullRequest
1 голос
/ 30 января 2020

Мне было интересно, есть ли в Rails 5 или 6 возможность получить полный текущий URL-адрес, который посещают.

Например:

http://localhost:3000/#about

http://localhost:3000/books

http://localhost:3000/books/sale

http://localhost:3000/books/#reference

Я пытался request.fullpath, но это не не работают со специальными символами, такими как # из http://localhost:3000/#about или http://localhost:3000/books/#reference

Мне просто нужен полный URL, как есть. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Часть URL после # называется якорем, она не отправляется на сервер и обрабатывается полностью в браузере (по умолчанию она прокручивается до элемента a с тем же id, также обычно она перегружается SPA для получить некоторый подобный эффект).

Единственный способ получить полное местоположение страницы в адресной строке пользователя - получить ее из javascript window.location и как-то отправить в бэкэнд.

0 голосов
/ 30 января 2020

Браузеры удаляют якорный текст (все, что следует за символом #, включая символ *) перед отправкой запроса на сервер. Таким образом, эта информация по умолчанию не будет вам доступна.

Если вы хотите прочитать эту информацию на стороне сервера, вам придется включить текст привязки в качестве параметра запроса, а также настройки якорная переменная. (установка переменной привязки исключительно изменяет атрибут href сгенерированного тега html)

Например,

<%= link_to "Books", books_path(params.merge(anchor: "sent-to-server")), anchor: "rendered-in-dom" %>

Якорь может быть прочитан на стороне сервера. с params[:anchor]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...