5

テーブル内のレコードを適切に表示できる優れた RoR テーブル ジェネレーター (または簡単なソリューション) を探しています (スタイル化されていませんが、適切な厳密な XHTML)。

User モデルと 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

フィールドの配列が機能するかどうかはわかりませんが、要点はわかると思います。すべてのテーブルビューで「自分自身を繰り返す」必要がないように、これに適した宝石、プラグイン、またはテクニックを知っている人はいますか?

4

6 に答える 6

7

@ChrisH: 2 つの配列を使用してテーブルを表現しても、それ以上の制御はできません。次のことをお勧めします

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
于 2010-07-31T10:22:16.893 に答える
3

ヘルパーを使用して作成できますか?

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

注意して使用してください!未テスト。

于 2009-07-16T22:01:53.783 に答える
2

これは私が同じ状況で使用することになったものです:

https://github.com/lunich/table_for

于 2011-07-07T18:41:20.493 に答える
2

Datagridを試してみてください- テーブルのようなデータを作成して表現するのに役立つ ruby​​ ライブラリです。

  • カスタマイズ可能なフィルタリング
  • コラム
  • ソート順
  • ローカリゼーション
  • CSVにエクスポート
于 2011-11-23T19:37:30.833 に答える
1

最近、GitHub でプロジェクトを開始しました。試してみてください: https://github.com/cthulhu666/easy_table

于 2012-07-13T13:46:04.620 に答える
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
于 2009-07-17T13:20:01.553 に答える