Rails コレクションテンプレート

View内で<%= render :partial => "collection", :collection => @collections %>

これでcollectionsの内容をcollenctionテンプレートを使って描画できる。


テンプレート内でcollection_counterとやることでカウントを取る事も可能。<%= collection_counter %>で、1週目なら0、2週目なら1。




参考URL
http://d.hatena.ne.jp/zariganitosh/20080120/1200789176

modelをjsonで出力

例えば
* users
o id => 1
o name => aaaa
o item_id => 1
* items
o id => 1
o name => item1
このようなmodelがあるとする。これを素直にjson出力すると
 User.find_by_id(1).to_json()

{
    user: {
        created_at: 2010-09-13T21:18:44Z (string)
        ,id: 1 (number)
        ,item_id: 1 (number)
        ,name: aaaa (string)
        ,updated_at: 2010-09-13T21:18:44Z (string)
    }
}


このようになってしまいitemが含まれない。


こんなデータをjsonで出力する場合は
 User.find_by_id(1).to_json(:include => :item)
こんな感じにするとitemも含まれる

{
    user: {
        created_at: 2010-09-13T21:18:44Z (string)
        ,id: 1 (number)
        ,item_id: 1 (number)
        ,name: aaaa (string)
        ,updated_at: 2010-09-13T21:18:44Z (string)
        ,item: {
            created_at: 2010-09-13T21:17:10Z (string)
            ,id: 1 (number)
            ,name: item1 (string)
            ,updated_at: 2010-09-13T21:17:10Z (string)
        }
    }
}

参考URL
http://d.hatena.ne.jp/seiunsky/20100914/1284415669

RailsでjQueryでjsonを取得

  $(function(){
    $("#hoge").click(getData);
  });
  function getData(){
    $("#hoge").empty();
    $.ajax({
      scriptCharset: 'urf-8',
      type:"GET",
      data: {
      },
      url: "ajax_json",
      success: function(data){
        $("#hoge").append(data['model名']['属性名']);
      }
    });
  }

んでcontrollerの方は

  def ajax_json
    model = Model.find(1))
    render :json => model
  end

こんな感じ

Ruby1.9における文字コードエラー

Ruby

UTF-8でかかれたCSVファイルを読み込んだときに
incompatible character encodings: ASCII-8BIT and UTF-8
というエラーが出る問題が出たので、解決法のメモです。

★症状
Ruby1.8+Rails2.2で動いていたseeds.rbをRuby1.9+Rails3.0に移植したら
incompatible character encodings: ASCII-8BIT and UTF-8
というエラーが出てrake:db seedsができなかった。

★原因
Ruby1.9での文字コードの扱いが変わったことによるエラー。 ユーザー側の原因ではない。

★解決法
force_encoding('UTF-8')メソッドを使う。 読み込んだCSVUTF-8ですよと手動で認識させるわけである。

CSV.foreach("db/seeds/#{Rails.env}/csv/foo.csv") do |row|
row.each { |i|
  i.force_encoding('UTF-8') if i != nil
}

(以下略)

根本的な解決ではないが、とりあえずはこれでOK。