2011-01-12 11 views
3

私は多くの属性を持つモデルを持っており、関連するすべてのデータを収集する一連のページを構築しています。最後のページでは、収集したすべてのデータをユーザーに表示します。Ruby on Rails:モデルの属性のコレクションを取得

各属性のすべてのラベルと値を手動で入力することでこのページを作成できますが、このような退屈で反復的な作業はすでに3-4行のコードで解決されていると思います。

この段階では、私はプロトタイピングしか行っていないので、これは良く見える必要はありません。

モデルのすべての属性を画面にすばやく印刷する方法については、

私はこのような何かを考えていた

@my_data_modelが、その後、私は属性を印刷したいのインスタンス変数である場合

を:

<%= show_attributes @my_data_model %> 

そのラベルを持つ出力属性値をだろう。

ありがとうございます。

答えて

5

私はこのような私のプロジェクトのいずれかのことをやっている:私は

<% @rejects = ["id", "created_at", "updated_at" %> 

次にオブジェクトから:

まず私は、タイムスタンプ列のようにしたくない列の配列を定義しますそれらの列を削除します。

<% @columns = Patient.column_names.reject { |c| @rejects.include?(c) } %> 

それから私はCOLUMN_NAMESを反復処理し、入力された情報をプリントアウト:

<h2>Is the following information correct?</h2> 
<div class="checks"> 
    <h3>Patient details</h3> 
    <% @columns.each_with_index do |c, i| %> 
    <p id="p<%= i %>" class="check"> 
     <span class="title"><%= c %>:</span> 
     <span class="value"><%= @patient[i] %></span> 
     <span class="valid"> 
     <img src="../../images/icons/tick.png" alt="green tick"> 
     </span> 
    </p> 
    <% end %> 
</div> 

は、この情報がお役に立てば幸い!

+1

使用している 'reject' /' include? 'の代わりに2つの配列を減算することができます。 – Jeriko

+0

そうですね。ありがとうございました! –

1

私はinheritated_resources gemの一般的な表示画面としてこれを使用しています。そこresource_class

%h2= resource_class.model_name.human 

%table 
    - resource_class.column_names.each do |column_name| 
    %tr{ :class => (cycle "odd", "even") } 
     %td= resource_class.human_attribute_name(column_name) 
     - if resource[column_name].respond_to?(:strftime) 
     %td= l resource.send(column_name) 
     - else 
     %td= resource.send(column_name) 

は、現在のモデルクラスとresourceそれの現在のインスタンスを返します。

<% @rejects = ["_id", "created_at", "updated_at"] %> 
<% @columns = Agency.column_names - @rejects %> 
<% @columns.each_with_index do |c, i| %> 
    <p id="p<%= i %>" class="check"> 
     <span class="title"><%= c %>:</span> 
     <span class="value"><%= @agency.send(c) %></span> 
    </p> 
    <% end %> 

<%= @patient[i] %>を使用して、私は私のORMとしてMongomapperを使用していますおそらくので、私のために動作しませんでした:

0

は、私はこのようなあなたの勧告に基づくソリューションを構築し、

をあなたのすべてをありがとうございます。

関連する問題