Отредактированный ответ, вы можете добавить идентификаторы в ячейки и передать их для работы.
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>
Вряд ли у вас есть сеанс, а у нет ] есть реферер.
Ситуация, когда реферер не установлен, не является чем-то необычным, и я обычно спасаю это ожидание:
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
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 )