Rails - хранение поискового запроса / результата - PullRequest
3 голосов
/ 26 июля 2010

У меня есть страница поиска, которая находит кандидатов.На этой странице вы можете нажать кнопку просмотра, чтобы найти больше информации о кандидате.Когда в представлении кандидатов вы можете нажать кнопку «Изменить» или выполнить ряд других действий, которые вернули бы вас также в представлении кандидатов.

Моя проблема связана с представлением кандидатов. Мне нужно добавить кнопку, чтобы вернуться к поиску.Результаты.Первоначально я думал об использовании кнопки JS с историей -1, но поскольку пользователь может выполнять другие действия из представления, это не сработает.

Я все еще новичок в рельсах, поэтому не уверен в своих возможностях... Я думаю, что это своего рода кэширование результатов, а затем, может быть, скрытое поле для отслеживания местоположения кэша (не думаю, что это лучшее решение, так как отслеживание скрытого значения может привести к беспорядку!)

Спасибо, Алекс

Ответы [ 5 ]

10 голосов
/ 26 июля 2010

Я бы, вероятно, использовал переменную сеанса для хранения этой информации.

Во-первых, убедитесь, что ваша форма, которая публикует на странице поиска, является операцией GET, таким образом, детали поиска находятся в строке запроса. Затем в поисковом действии вы можете получить URL-адрес запроса и сохранить его в сеансе:

session[:search_results] = request.url

Теперь, по вашему мнению, для результатов, вы можете сделать «Назад к результатам поиска» следующим образом:

link_to "Back to search results", session[:search_results]
2 голосов
/ 26 июля 2010

У вас есть несколько вариантов:

Кэшируйте результаты, как вы предлагали.Потенциальным недостатком этого является то, что он занимает память, и если будут добавлены новые действительные записи, вы их не увидите.Вы можете сохранить кэш в сеансе или в базе данных (хотя в последнем случае вы не сильно выиграете).

Я бы предложил просто запомнить последний поисковый запрос в сеансе или с использованием скрытогополя.В итоге вы перезапускаете запрос, когда переходите на страницу результатов поиска, но в правильно проиндексированной БД это не должно быть большим делом.

Удачи!

2 голосов
/ 26 июля 2010

Вы можете включить параметры для запроса на подстранице. Например: /foo/search?q=stuff отображает результат поиска. Каждый результат имеет ссылку типа /foo/:id?q=stuff. А на подстранице у вас будет доступный параметр для ссылки на главную страницу.

В этом решении не используется состояние сервера, что обычно считается лучшим способом создания веб-приложений. Это не только означает, что ваш браузер будет вести себя должным образом в отношении закладок, нескольких вкладок и т. Д., Но также обеспечивает возможность правильного кэширования. Кроме того, это снижает сложность вашего приложения, облегчая отладку и расширение.

1 голос
/ 26 июля 2010

Вы можете поместить результаты поиска в таблицу "search_results", указанную с помощью идентификатора пользователя. Затем, когда пользователь заходит на страницу, всегда загружается из запроса к этой таблице.

0 голосов
/ 11 января 2015

Если кто-нибудь сталкивался с этой страницей, и вам нужна кнопка, которая возвращается на предыдущую страницу и по-прежнему отображает результаты поиска (как кнопка Google Chrome), просто используйте: назад .....

<%= link_to(image_tag("back.svg"), :back, :class => 'back_btn') %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...