Хранение / извлечение значений в cookie Rails и в другом контроллере [дубликат]

Просто следите за тем, как я это сделал и почему:

  1. Я больше не наследую класс Rule из MonoBehaviour, чтобы избежать отслеживания создания и удаления объектов gameObjects, которая оказалась болью.
  2. Поскольку метод Invoke не существует в родовых классах, я заменил его отражением, как описано здесь здесь

4
задан Petran 16 September 2013 в 23:03
поделиться

3 ответа

Используйте session, а не cookies. Вам не нужно его расшифровывать, рельсы обрабатывают это для вас. Создайте сеанс так же, как и вы:

session[:test] = Array.new

, и когда вам это нужно, обратитесь к нему, как обычно

session[:test]
# => []
-4
ответ дан lightswitch05 18 August 2018 в 07:45
поделиться
  • 1
    как это может быть правильным ответом, когда он даже не пытается ответить на вопрос о хранении массива в cookie? – sevenseacat 12 November 2013 в 04:31
  • 2
    @sevenseaca - сеанс хранит массив в файле cookie – lightswitch05 12 November 2013 в 04:34
  • 3
    Очень ограниченным способом (если вы используете хранилище cookie rails для сеансов), и вы не можете установить для них какие-либо обычные параметры cookie. – sevenseacat 12 November 2013 в 04:36
  • 4
    Куки-файлы и сеансы - это разные вещи, предназначенные для разных (хотя и в целом похожих) целей. Это отвечает на неправильный вопрос. – AlexQueue 3 December 2013 в 02:00

«Rails way» - использовать JSON.generate(array), так как это то, что используется во втором примере в документах Cookies:

# Cookie values are String based. Other data types need to be serialized.
cookies[:lat_lon] = JSON.generate([47.68, -122.37])

Источник: http: // api. rubyonrails.org/classes/ActionDispatch/Cookies.html

Если вы хотите его прочитать, просто используйте JSON.parse cookies[:lat_lon], например, и он предоставит вам массив.

4
ответ дан sandre89 18 August 2018 в 07:45
поделиться

При записи в файл cookie я обычно конвертирую массив в строку.

def save_options(options)
  cookies[:options] = (options.class == Array) ? options.join(',') : ''
end

Затем я конвертирую обратно в массив при чтении файла cookie.

def options_array
  cookies[:options] ? cookies[:options].split(",") : []
end

I «Не уверен, что это« правильный путь », но он работает хорошо для меня.

5
ответ дан Stenerson 18 August 2018 в 07:45
поделиться
  • 1
    Очевидно, что это касается сохранения значений, содержащих запятые. – AlexQueue 3 December 2013 в 02:01
  • 2
    Очень верно. В этом случае я управляю всеми ключами и значениями, поскольку они являются специфичными для приложения настройками (например, ShowDetails,TRUE). Разумеется, вы также можете изменить разделитель на что-то более «безопасное», если хотите. – Stenerson 3 December 2013 в 03:50
Другие вопросы по тегам:

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