9670


railsでブログアプリケーションを作成しています。  
基本機能はできたので、「最近見た記事」という機能を付けたいのですが、  
ベストな実装方法がわからないのでアドバイスをいただけないでしょうか。

## 機能

ページの下部に最近みた記事を20記事まで表示(リンク)する。

## 今考えている実装方法

ユーザーが記事を観覧した時に、クッキーに記事のID情報を保存。  
フォーマットはカンマ区切りで平文。  
これを必要なときに読みこむ。

* * *

これでよいのか不安です。  
重要な情報ではないので、最悪の事態というのは起こらないと思うのですが、  
このやりかたは実用的でしょうか。

もっと格好の良い方法があれば教えて下さい。

また、有効なgemなどがございましたら教えていただけますでしょうか。  
よろしくお願いします。


CC BY-SA 3.0
2015-04-29T09:45:11.767
9666
2015-07-28T22:42:19.873
9149
question
ruby-on-rails
railsで「最近見た記事」という機能の実装についてアドバイスをお願いします。


その方法で良いと思います。

jquery.cookieを導入すれば、Javascriptのオブジェクトをそのまま保存出来るようになりますので、便利かもしれません。

**Gemfile**

[code]

    gem 'jquery-cookie-rails'
    
[/code]

**Code**

[code]

    // jquery.cookieでオブジェクトを保存できるようにします。
    $.cookie.json = true;
    
    // 新しい閲覧情報を保存する関数を定義します。
    function addNewView(id){
      // cookieから閲覧データを取得します。
      var views = $.cookie('views') || [];
    
      // 既に同じIDがあれば削除します。
      var find = views.indexOf(id);
      if(~find){ views.splice(find, 1); }
    
      // idを追加してcookieに保存します。
      views.unshift(id);
      $.cookie('views', views);
    }
    
    // 閲覧情報を取得する関数を定義します。
    function getViews(length, start){
      var views = $.cookie('views') || [];
      length = length || views.length;
      start = start || 0;
      return views.splice(start, length);
    }
    
    // 閲覧情報をクリアする関数を定義します。
    function clearViews(){
      return $.removeCookie('views');
    }
    
    addNewView(1); // 記事1を観た
    addNewView(2); // 記事2を観た
    addNewView(3); // 記事3を観た
    addNewView(1); // 記事1を観た
    
    getViews(); // -> [1,3,2]
    
[/code]


CC BY-SA 3.0
2015-04-29T20:34:55.590
9670
2015-04-29T20:50:14.330
2015-04-29T20:50:14.330
8351
8351
9666
answer