jquery.cookie.jsを使えばすごい簡単にjavascriptでcookieが扱えます。
$.cookie('保存名', 値) だけで保持できるし、 $.cookie('保存名') だけで取得できる。うーん便利すぎる。
この記事ではRailsプロジェクトでjquery.cookie.jsを使って、文字サイズの切り替えを自由に行える方法をメモとして残します。やりたいことは自由に文字のサイズを切り替えられて、ページ遷移やリロード時も選択中の文字サイズの設定を引き継げるようにしたい。
- jquery-cookie.jsのソースをクローン
# Rails.rootで
git clone https://github.com/carhartl/jquery-cookie
- jquery.cookie.jsを/vendor配下に設置
cp jquery-cookie/src/jquery.cookie.js vendor/assets/javascripts/
# コピーしたら他は必要ないので消しちゃってOK
rm -rf jquery-cookie
- application.jsに定義
app/assets/javascripts/application.js
//= require jquery.cookie
//= require_tree .
//= require font_change
- 処理
app/views/layouts/_header.html.slim
.navbar-text
  | 文字サイズ  
  = link_to '小', '#', class: 'btn btn-default font-change', id: 'fontS'
  |  
  = link_to '中', '#', class: 'btn btn-default font-change', id: 'fontM'
  |  
  = link_to '大', '#', class: 'btn btn-default font-change', id: 'fontL'
app/assets/javascripts/font_change.js.coffee
 $ ->
  # フォントサイズ適用
  history = $.cookie('fontSize')
  elm_body = $('.wrapper') # bodyタグの上にwrapperクラスを追加しておく
  if history
    elm_body.addClass(history)
    $("##{history}").addClass('active') # bootstrapのactiveクラスを追加
  # フォントサイズ変更
  $('.font-change').click ->
    history = $.cookie('fontSize')
    set_font_size = $(this).attr('id')
    $("##{history}").removeClass('active')
    $(this).addClass('active')
    if history
      elm_body.removeClass(history).addClass(set_font_size)
    else
      elm_body.addClass(set_font_size)
    $.cookie('fontSize', set_font_size)
app/assets/stylesheets/hoge.css.scss
.fontS {
  font-size: 14px !important;
}
.fontM {
  font-size: 16px !important;
}
.fontL {
  font-size: 18px !important;
}
