Добавьте параметр ко всем URL-адресам в rails

#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, может потребоваться огромная работа по внесению изменений с обеих сторон…