Ruby on rails NoMethodError on与ruby on rails有很多关系

Ruby on rails NoMethodError on与ruby on rails有很多关系,ruby-on-rails,activerecord,relationships,Ruby On Rails,Activerecord,Relationships,我有三个模型,我正试图找到与产品相关的各个团队中的人员 产品 class Product < ActiveRecord::Base mount_uploader :photo, ImageUploader has_one :team end 我明白了 NoMethodError (undefined method `count' for #<Team:0x90dc098>): NoMethodError(未定义的#的“count”方法): NoMethodEr

我有三个模型,我正试图找到与产品相关的各个团队中的人员

产品

class Product < ActiveRecord::Base
   mount_uploader :photo, ImageUploader
   has_one :team
end
我明白了

NoMethodError (undefined method `count' for #<Team:0x90dc098>):
NoMethodError(未定义的#的“count”方法):
NoMethodError(团队的未定义方法'count':0x90dc098)

count
ActiveRecord::Relation
的数组上工作。此处
find_by
返回单个记录,而不是
ActiveRecord::Relation
。将
find_by
更改为
where
应该起作用

@product = Product.where(name: params[:name]).first
if @product.team.count > 0
  @team = @product.team.persons
end
NoMethodError(团队的未定义方法'count':0x90dc098)

count
ActiveRecord::Relation
的数组上工作。此处
find_by
返回单个记录,而不是
ActiveRecord::Relation
。将
find_by
更改为
where
应该起作用

@product = Product.where(name: params[:name]).first
if @product.team.count > 0
  @team = @product.team.persons
end

应用的计数函数不是数组,因此会收到该错误。您可以这样做:

@product = Product.find_by(name: params[:name])

if @product.team.present? 
  @team = @product.team.persons 
end

或者使用Pavan提到的where子句。您要应用的计数函数不是数组,因此您将收到该错误。您可以这样做:

@product = Product.find_by(name: params[:name])

if @product.team.present? 
  @team = @product.team.persons 
end

或者使用Pavan提到的where子句来添加额外的内容():

然后在前端使用一些条件逻辑:

<% if @team %>


。。。这与您现在的模式基本相同。

只需添加一些额外的内容():

然后在前端使用一些条件逻辑:

<% if @team %>


。。。这基本上与您现在拥有的模式相同。

现在有了这个NoMethodError(对于#未定义的方法'team'):做得好
@Pavan
-对底层ruby功能有了很好的了解现在有了这个NoMethodError(对于#未定义的方法'team')):干得好
@Pavan
-对ruby底层功能有很好的了解将其更改为where now Nome NoMethodError(对于#未定义的方法'team'):将其更改为where now NoMethodError(对于#未定义的方法'team'):
<% if @team %>