1

デバッグ出力は次のようになります。

!ruby/object:Business 
attributes:
  business_type: 8
  type_count: 2

しかし、これらの属性にアクセスするにはどうすればよいでしょうか?

私はここでばかげていると感じています:/

編集:私の見解からのいくつかのコード:

<% @serviceSections.each do |k,v| %>
<% c = @bc.select{|s| s.business_type == k} %>  
<%= debug(c.type_count) %>
<% end %>

エラーが発生するだけです

[# < Business business_type: 8>]:Array の未定義メソッド `type_count'

EDIT2

私はほとんどばかです:-)それは遅かった....

私がする必要があったのは、実際に確認することだけでした:

<% if !c.respond_to?("type_count") %>
4

2 に答える 2

4
Business.business_type # => 8
Business.type_count # => 2

これにはBusiness、通常、次のように、クラスで属性リーダーが定義されている必要があります。

class Business
  attr_reader :business_type, :type_count
  # more code ...
end

さらに値が必要setな場合は、代わりに属性アクセサーを定義する必要があります。

class Business
  attr_accessor :business_type, :type_count
  # more code ...
end

次に、次のことができます。

Business.business_type = 17
Business.type_count = 22
于 2013-01-14T07:56:06.063 に答える
1

ドキュメントによると:「上記の例では、このメソッドは配列を返すように見えますが、実際にはリレーションオブジェクトを返し、ActiveRecord::QueryMethodsの他のメソッドなどの他のクエリメソッドを追加できます。」

それを念頭に置いて、以下はトリックを行う必要があります

c.each do |r|
  puts r.type_count
end

によって返されるレコードが1つだけであることが確実な場合はselect、以下も機能します。

<%= debug c[0].type_count %>

于 2013-01-14T08:26:11.227 に答える