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'