2009-07-16 11 views
4

私はテーブル(私有化されていないが適切な厳密なXHTML)で私のレコードのまともなビューを与えることができる良いRoRテーブルジェネレータ(または簡単なソリューション)を探しています。Ruby on Rails HTMLテーブルジェネレータ

のは、私はUserモデルと住所のモデルがあるとしましょう: - さんは、私は私のユーザコントローラに以下の持っていると言う一つのアドレスも「primary_address」

としてリンクされている - ユーザー は、多くのアドレスを持つことができますが

def index 
    @users = User.find(:all,:order => 'id ASC') 
    @headers = ["id","First","Last","City","State"] 
    @fields = [:id,:firstname,:lastname,:primary_address.city,:primary_address.state] 
end 

フィールドの配列が機能するかどうかわかりませんが、それはポイントを取得すると思います。誰もが良い宝石、プラグインまたはこれのための技術を知っているので、私は自分のすべてのテーブルビューで "自分自身を繰り返す"必要はありませんか?

答えて

6

@ChrisH:2つのアレイを使用して表を表現することは、それ以上の制御を与えません。私は、次のことをお勧めします:table_helper

ERBスニペット -

collection_table(@posts, {}, :id => 'posts', :class => 'summary') do |header, body| 
    header.column :title 
    header.column :category 
    header.column :author 
    header.column :publish_date, 'Date< br \>Published' 
    header.column :num_comments, '# Comments' 
    header.column :num_trackbacks, '# Trackbacks' 

    body.alternate = true 
    body.build do |row, post, index| 
    row.category  post.category.name 
    row.author   post.author.name 
    row.publish_date time_ago_in_words(post.published_on) 
    row.num_comments post.comments.empty? ? '-' : post.comments.size 
    row.num_trackbacks post.trackbacks.empty? ? '-' : post.trackbacks.size 
    end 
end 
+0

リンクは404を与えます... – Rekin

+1

Rekin、リンクは私のために今働いています、もう一度やり直してください。ありがとう – Ninad

3

あなたはヘルパーを使用して1つを作ることができますか?

def table_generator(collection, header_names, fields) 
    return false unless collection.any? 
    content_tag(:table, :class => "generic-table") do 
    content_tag(:thead) do 
     content_tag(:tr) do 
     header_names.each do |name| 
      content_tag(:td, name) 
     end 
     end 
    end 
    content_tag(:tbody) do 
     collection.each do |col| 
     content_tag(:tr) do 
      field_names.each do |name| 
      content_tag(:td, col.send(name)) 
      end 
     end 
     end 
    end 
    end 
end 

注意して使用してください。テストされていない。

+0

これは少しでした役に立ったが、うまくいかない。何が起こっているのか分かりません。たぶんそれは私の入力ですが、テーブルを生成することはできません。 2つのtd行の後ろにも終了タグがないことに注意してください。 – chrishomer

+0

申し訳ありません、はい、終了タグが必要です。どんなパラメータを渡していますか? 私は瞬間があり、私がデバッグできるかどうかを見てください。 –

1

私はこれがきれいではないと知っていますが、私は "content_tag"に非常に多くの問題を抱えていました。私はむしろその機能を使いたいと思っていますが、時間はエレガンスよりも貴重です。たぶん私は戻って、将来それを理解するだろうが、今のところ、これは機能的であり、とにかくより良いCSSの実践を強制する。

def table_generator(collection, header_names, fields, class_name) 
    return false unless collection.any? 
    table_str = "" 
table_str += "<table id=\"" + class_name + "\" class=\"" + class_name + "\">\n" 
    table_str += "\t<thead>\n" 
    table_str += "\t\t<tr>\n" 
     header_names.each do |name| 
     table_str += "\t\t\t<th>" 
     table_str += name 
     table_str += "</th>\n" 
     end 
    table_str += "\t\t</tr>\n" 
    table_str += "\t</thead>\n" 
    table_str += "\t<tbody>\n" 
    collection.each do |col| 
     table_str += "\t\t<tr>\n" 
     fields.each do |name| 
      table_str += "\t\t\t<td>\n" 
      table_str += col[name].to_s 
      table_str += "\t\t\t</td>\n" 
     end 
     table_str += "\t\t</tr>\n" 
    end 
    table_str += "\t</tbody>\n" 
table_str += "</table>\n" 
end 
+0

"show | edit | delete"コントロールはどうですか? – Rekin

2

Datagridを試してみて - 助けルビーライブラリを

    を使用して表形式のデータを作成して表記します。私は最近、GitHubの上でプロジェクトを開始した
  • カスタマイズ可能なフィルタリング
  • ソート順
  • ローカライズ
  • エクスポートCSV