#ruby-on-rails
Вопрос:
Я работаю над улучшением проекта, в котором в настоящее время у нас есть пользовательский status
параметр, сохраненный в сеансе. Однако я хотел бы status
выйти из сеанса, так как не хочу, чтобы на это status
влияли разные вкладки от одних и тех же пользователей. Поэтому мое предложение таково, что мне нужно добавить status
в конец URL-адреса, например
htttp://example.com/index/?status=0
У меня уже есть before_action для контроллера приложения, чтобы прочитать status
, как показано ниже
def set_status
if params[:status]
@status = params[:status]
else
@status = 0
end
end
Ранее, когда я сохранял статус в сеансе, действие » до » было больше похоже на приведенное ниже
def set_status
if session[:status].nil?
session[:status] = 0
end
@status = session[:status]
end
Но я не знаю, что делать, чтобы добавить /?status=0
все URL-адреса, которые у меня есть в проекте, и сохранить их неизменными с одной страницы на другую, если пользователь не изменит их. Поскольку это очень большой и сложный проект, я не думаю, что смогу перейти к каждому представлению или действию контроллера, чтобы вручную добавлять его по одному. Поэтому мне интересно, есть ли для этого элегантное решение.
Комментарии:
1. вместо того, чтобы указывать значение статуса во всех URL-адресах, вы могли бы сохранить это значение в базе данных, пользовательской модели. Сама идея добавления его ко всем URL-адресам предполагает, что это неправильный подход.
2. Я не думаю, что этот подход применим к моему варианту использования. Для получения более подробной информации одному и тому же пользователю разрешается иметь разные статусы на разных вкладках. Я бы сказал, давайте использовать
workspace
вместоstatus
этого в качестве примера. Вся загрузка и изменение содержимого страницы зависит от текущегоworkspace
. Ранее, когда я сохранял информацию о рабочем пространстве в сеансе, возникла проблема, когда пользователь изменил рабочее пространство на одной вкладке, а затем также изменилось рабочее пространство на другой вкладке, что не является хорошим опытом для пользователя.
Ответ №1:
Я рекомендую поместить рабочее пространство в качестве явного параметра маршрутизации либо в качестве поддомена, либо в качестве начального префикса. Таким образом, вы можете использовать его во всех контекстах и продолжать создавать красивые URL-адреса.
Комментарии:
1. Да … это то, что пришло мне в голову в первую очередь. Однако, поскольку у нас уже есть другая серверная служба, которая зависит от текущего API, который мы создаем с помощью rails, может потребоваться огромная работа по внесению изменений с обеих сторон…