rails在不同视图中使用计数

时间:2010-05-23 15:23:23

标签: ruby-on-rails ruby rails-models grails-controller

你好我猜测这将是一个很好的问题..但是..

我有一个名为list的脚手架,其中has_many:wish。在我的模型中使用该信息,我可以在列表视图中使用此代码

  

现在我已经制作了一个名为statusboard的控制器。 并且在'我有3个功能..或者如何说它..但它是索引,登录,登出..并且..在登录和文件#app / views / statusboard / loggedin.html.erb我想要显示这个..

  

您好{用户名},您已制作{count lists}列表和{count wishes}愿望

这是我想我应该写在我的文件中..

  

你好{用户名},你做了<%= h @ user.list.count%>列表和<%= h @ user.wishes.count%>愿望

我的列表模型就像这样=

  

class List<的ActiveRecord ::基

     

attr_accessible:user_id,:name,:description

     

belongs_to:users

     

has_many:祝愿

     

我的愿望模型就像这样=

  

类愿望<的ActiveRecord ::基

     

attr_accessible:list_id,:name,:price,:link,:rating,:comment

     

belongs_to:list

     

最后我的用户模型就是这样=

  

class User<的ActiveRecord ::基

     

#包括默认设计模块。其他可用的是:

     

#:token_authenticatable,:lockable和:timeoutable

     

设计:database_authenticatable,:可注册,#:确认,

     

:可恢复,:可记住,:可跟踪,:可验证

     

#为您的模型设置可访问(或受保护)属性

     

attr_accessible:email,:password,:password_confirmation

     

has_many:列出

     

我希望有人可以帮助我:-)! / Oluf Nielsen

3 个答案:

答案 0 :(得分:0)

将此方法写入用户模型

#copy the below code in /app/models/user.rb file`
def wishes_count
  counter = 0
  self.lists.each do |list| # this is similar to @user.lists 
    counter += list.wishes.count #this is similar to @list.wishes
  end
  return counter
end
  

你好{用户名},你做了<%= h @ user.list.count%>列表和<%= h @ user.wishes_count%>愿望

您不能使用@ user.wishes.count,因为用户与愿望没有直接关系,希望此解决方案适合您。如有任何问题,请发表评论。

答案 1 :(得分:0)

为用户添加has_many:through association:

class User < ActiveRecord::Base
  ...
  has_many :lists
  has_many :wishes, :through => :lists
end

然后你可以使用

@user.wishes.count

答案 2 :(得分:0)

这有点切线,但是没有必要使用h html清理辅助方法:

<%=h @user.list.count %>

因为count是ruby生成的方法而不是用户创建的。