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) } } }
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における文字コードエラー
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')メソッドを使う。 読み込んだCSVをUTF-8ですよと手動で認識させるわけである。
CSV.foreach("db/seeds/#{Rails.env}/csv/foo.csv") do |row| row.each { |i| i.force_encoding('UTF-8') if i != nil } (以下略)
根本的な解決ではないが、とりあえずはこれでOK。