-1

次の方法でオブジェクト属性を取得できます。

Class Object
 field :name
 field :email
 field :second_name
end

このループで:

<% @object.attributes.each do |attr_name| %>
....
<% end %>

3 つの属性がある場合、3 つの属性を取得します。

および属性attr_nameの取得のみが必要ですnameemail

このループでどのように破棄または除外できますかfield :second_name

ありがとうございました

4

3 に答える 3

2

特定の属性を含めたり除外したりする基準が明確ではありません。

ブラックリストが必要な場合:

(@object.attributes - [:second_name]).each{ ... }
# Alternatively:
@object.attributes.reject{ |n| n==:second_name }.each{ ... }

 
ホワイトリストが必要な場合:

(@object.attributes & [:name, :email, :socks]).each{ ... }
于 2012-10-18T18:04:53.770 に答える
2

次のように、ループ内に条件を追加できます。

@object.attributes.each do |attr_name|
  unless attr_name.eql?('second_name')
    # Do stuff here
  end
end
于 2012-10-18T17:45:57.767 に答える
0

ブラックリスト:

exclude = [:a, :b, :c]
@object.attributes.reject { |k,v| only.include?(k.to_sym) }

ホワイトリスト:

only = [:a, :b, :c]
@object.attributes.select { |k,v| only.include?(k.to_sym) }
于 2014-08-20T19:43:43.390 に答える