Правильно выполнение redirect_to: назад в Ruby on Rails, когда ссылающийся домен не доступен

Отредактированный ответ, вы можете добавить идентификаторы в ячейки и передать их для работы.

const changeColor = (elements, color) => {
  elements.forEach(el => {
    const element = document.querySelector(el);
    element.style.backgroundColor = color;
  })
}
.colorbox {
  width: 100px;
  height: 100px;
  background-color: aquamarine;
  margin-bottom: 10px;
}
<div class="colorbox" id="colorbox1"></div>
<div class="colorbox" id="colorbox2"></div>
<div class="colorbox" id="colorbox3"></div>

<button onclick="changeColor(['#colorbox1', '#colorbox3'], 'tomato')">Change 1 & 3 to tomato</button>

<button onclick="changeColor(['#colorbox1', '#colorbox2'], 'aliceblue')">Change 1 & 2 to aliceblue</button>

<button onclick="changeColor(['#colorbox2', '#colorbox3'], '#ff0000')">Change 2 & 3 to reddest</button>

91
задан abraham 6 February 2017 в 15:25
поделиться

2 ответа

Вряд ли у вас есть сеанс, а у нет ] есть реферер.

Ситуация, когда реферер не установлен, не является чем-то необычным, и я обычно спасаю это ожидание:

def some_method
  redirect_to :back
rescue ActionController::RedirectBackError
  redirect_to root_path
end

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

Кстати, я думаю, что это плохая идея, потому что это делает поток пользователей неоднозначным. Это имеет смысл только в случае входа в систему.

ОБНОВЛЕНИЕ : Как отметили несколько человек, это больше не работает с Rails 5. Вместо этого используйте redirect_back , этот метод также поддерживает откат. Код становится:

def some_method
  redirect_back fallback_location: root_path
end
142
ответ дан 24 November 2019 в 06:40
поделиться
def store_location
  session[:return_to] = request.request_uri
end

def redirect_back_or_default(default)
  redirect_to(session[:return_to] || default)
  session[:return_to] = nil
end

Попробуйте! (Благодаря плагину Authlogic )

37
ответ дан 24 November 2019 в 06:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: