1

解決策を探しているときに、StackOverflow: Generate an HTML table from an array of hashs in Ruby でこれを見つけました。

これはうまく機能しますが、私は新しいプログラマーであり、Rails で動作させることができません。products というデータベース テーブルがあります。各製品には、ハッシュを格納するデータと呼ばれるフィールドがあります。このハッシュは次のようになります。

{"type"=>"book", "price"=>"7.99"}

私はhamlを使用していますが、現在のビューは次のようになっています:(これはハッシュを出力しているだけです):

- @products.each do |product|
  =product.name   
  =product.data #THIS PRINTS A HASH LIKE THE ONE ABOVE
  %hr

そこで、キー (タイプや価格など) を としてテーブル ヘッドに入れ、各製品の値を として使用したいと考えています。しかし、製品名のように、ハッシュから生成されない「静的」列も必要です。ここに写真があります:

ここに画像の説明を入力

4

2 に答える 2

1

次のように簡単に値を取得できます。

%table
  %thead
    %tr
      %th
        Name
      %th
        Type
      %th
        Price
  %tbody        
    - @products.each do |product|
      %tr        
        %td
          = product.name 
        %td  
          = product.data["type"]  unless product.data.nil?
        %td
          = product.data["price"] unless product.data.nil?
于 2013-10-11T05:23:18.960 に答える
1

あなたが参照した StackOverflow の記事は、データベース以外の別のソース (YAML または CSV ファイルなど) からデータを読み取り、それを HTML としてフォーマットする場合にうまく機能します。

この記事のアプローチの利点は、ハッシュで使用されるキーに関して柔軟であることです。たとえば、柔軟な「スキーマ」があります。入力データによっては、フォーマットされた HTML テーブルに異なる列を含めることができます。

一方、Rails アプリケーションでは通常、基盤となるデータベースに固定スキーマがあります。たとえば、属性 (キー) は事前によく知られており、移行で定義され、モデルで参照されます。属性が固定されているため、HTML または HAML フォームは固定されており、最初のケースのように可変ではなく、フォームをテンプレート ファイルとして提供するだけでかまいません。

そのため、Rails のビューは次の場所にあります。app/views/your-model-name/

@rails-guy の例は、Product モデルの固定フォームが index アクションでどのように見えるかを示しています。

参照: http://guides.rubyonrails.org/layouts_and_rendering.html

および: http://guides.rubyonrails.org/ (ビューの下)

于 2013-10-11T05:51:02.763 に答える