Ruby on rails 3.2 RubyonRails用户总积分

Ruby on rails 3.2 RubyonRails用户总积分,ruby-on-rails-3.2,Ruby On Rails 3.2,我有两个模型,我试图在索引视图上显示用户的信用 class User < ActiveRecord::Base has_many :credits class Credit < ActiveRecord::Base belongs_to :user 我得到的结果有点让人困惑,我知道我做错了什么,但我无法理解 index.html.erb <%= h number_to_currency(designer_owed, :unit => "$") %> 我

我有两个模型,我试图在索引视图上显示用户的信用

class User < ActiveRecord::Base
has_many  :credits



class Credit < ActiveRecord::Base
belongs_to :user
我得到的结果有点让人困惑,我知道我做错了什么,但我无法理解

index.html.erb

<%= h number_to_currency(designer_owed, :unit => "$") %> 

我想在索引视图中显示这一点

在视图中,像“@user”这样的实例变量对应于控制器中的实例变量

在索引控制器和相应的视图中,通常会有一个包含所有用户的“@users”实例变量。事实上,在许多情况下,索引操作可以简单到:

def index
  @users = User.all
end
在任何情况下,在索引中包含@user变量都是不寻常的,而且似乎没有,因此出现了错误

在您的索引视图中,我想象您希望遍历所有用户并显示每个用户的欠款金额,因此:

<%= h @users.each {|user| number_to_currency(designer_owed(user), :unit => "$") %>
有鉴于此,你要做什么

%table
  %thead
    %tr 
      %th User
      %th Credits
  %tbody
    - @users.each do |user|
      %tr
        %td user.name
        %td user.credits.collect(&:total_recieved).sum #doesnt fire extra query cause we have used 'includes'
结帐

<%= h @users.each {|user| number_to_currency(designer_owed(user), :unit => "$") %>
def designer_owed(user)
  Credit.where( :user => user ).sum(:total_received)
end
def index
  @users = User.includes(:credits) #fires 2 queries. for users and for credits. use for code optimization
end
%table
  %thead
    %tr 
      %th User
      %th Credits
  %tbody
    - @users.each do |user|
      %tr
        %td user.name
        %td user.credits.collect(&:total_recieved).sum #doesnt fire extra query cause we have used 'includes'