Итак, этот меня поставил в тупик;надеюсь, добрая душа поможет мне.Как часть логики для отображения определенных кнопок для пользователей, которые выполнили действие, я сохраняю идентификатор объекта, которым они манипулировали, в массиве сеансов, называемом "praed_for". (Уникальной частью этой проблемы является то, что она имеет дело с сессиями, а не с массивом, сохраняемым в базе данных.) В действии show моего контроллера я оцениваю, является ли текущий идентификатор запрашиваемой записиприсутствует в массиве сессийЯ присваиваю это логическое значение переменной сеанса @already_prayed_for
.Ниже приведена логика для этого:
@already_prayed_for = (session[:prayed_for] ||= []).include? params[:id]
Но вот проблема: я не могу оценить это в своей части.Например, если я попытаюсь оценить следующее (в HAML), где «запись» - это переменная, представляющая под рукой запись, а «идентификатор» - это ее идентификатор, который должен быть сохранен в переменной сеанса «rayed_for », он всегда будет оцениватьна false
:
-if (session[:prayed_for] ||= []).include? entry.id
Я пришел к выводу, что, возможно, я оцениваю что-то неправильно в своей части, когда оцениваю, присутствует ли идентификатор в массиве сеанса.Кроме того, эта та же самая концепция отлично работала в действии контроллера (но я не могу использовать это решение на этот раз, оно должно быть оценено в частичном порядке) , но оно также не удалось в ApplicationHelper
.Любая помощь в решении этой проблемы очень ценится!
ОБНОВЛЕНИЕ: Вот код, где я устанавливаю сеанс в другом действии:
if @entry.save
(session[:prayed_for] ||= []) << params[:id]
end