1

インスタンスメソッド(またはクラス)を追加したいのですが、常に未定義のメソッドエラーが発生します。

ウェブサイトは価値のあるレポートに関連付けられています。この値を取得する必要があります。

これが私の見解でそれをどのように呼びたいかです:

 <%websites.each do |website|%>
   //and use website.amount here

これがWebsiteControllerからの私のコードです(このコードはクラスメソッド用であることを知っています):

  def self.amount
      self.performance_report.conversions
  end

クラスまたはインスタンスメソッドである必要があり、どのようにあるべきか、適切に作成する方法を取得できません。

4

2 に答える 2

2

そのメソッドは、コントローラーではなく、モデルに追加する必要があります。これはインスタンスメソッドなので、次のようになりますdef amount

class Website < ActiveRecord::Base
  def amount
    self.performance_report.conversions
  end
end

これを使用すると、ビューで次のことを実行できます。

<% websites.each do |website| %>
  <%= website.amount %>
<% end %>
于 2012-07-26T12:18:35.370 に答える
0

Website.find()は、Webサイトのインスタンスを返します。

Webサイトに1つのperformance_reportがあり、PerformanceRecordにフィールド変換がある場合、

 Website.find(38).performance_report.conversions

メソッドを定義しなくても機能するはずです。これが期待どおりに機能しない場合は、アソシエーション定義を確認する必要があります。コントローラでクラスメソッドを定義しても効果はありません。

于 2012-07-26T11:10:27.373 に答える