Как динамически задать имя переменной сеанса?

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я пытаюсь выполнить следующее, но с помощью переменной сеанса (т. Е. ‘session[:dynamically_named]’), а не переменной экземпляра. Вот как я вижу, это можно сделать с помощью переменной экземпляра:

 instance_variable_set("@#{params[:key]}", params[:val])
  

Видя, что, похоже, не существует «session_variable_set», как это можно сделать, даже при некоторой альтернативной работе с переменной сеанса?

Ответ №1:

Вы устанавливаете значения session , как если бы вы использовали обычный хэш, например:

 session[:dynamically_named] = 'some_value'

# or, to match your example code...

session[ params[:key] ] = params[:val]
  

Комментарии:

1. Я опубликовал то же самое. Нет необходимости в взломах. session уже является динамическим.

Ответ №2:

session (в контроллере Rails) является хэшем, поэтому используйте его как хэш:

 session[:foo] = 'bar'