首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过关联找到没有has_many ID的[模型]

无法通过关联找到没有has_many ID的[模型]
EN

Stack Overflow用户
提问于 2014-04-06 15:46:50
回答 1查看 559关注 0票数 1

我有三个模特--妈妈,爸爸和孩子。妈妈和爸爸只通过孩子属于彼此,所以这些协会是这样的:

代码语言:javascript
复制
class Kid < ActiveRecord::Base
  belongs_to :mom
  belongs_to :dad
end

class Mom < ActiveRecord::Base
  has_many :kids
  has_many :dads, through: :kids
end

class Dad < ActiveRecord::Base
  has_many :kids
  has_many :moms, through: :kids
end

我想通过寻找任何一个妈妈,而不仅仅是通过爸爸的孩子,找到爸爸的妈妈:

代码语言:javascript
复制
http://localhost:3000/dads/superdad/moms

resources :dads do
  resources :kids
  resources :moms
end

在我的妈妈控制器中,我试图找到“超级爸爸”的ID:

代码语言:javascript
复制
def index
   @dad = Dad.find(params[:id])
   if params[:q].present?
     @moms = Mom.search(params[:q], page: params[:page], per_page: 25)
   else
     @moms = Mom.none
   end
end

但是遇到了这个错误:

代码语言:javascript
复制
Couldn't find Dad without an ID  
# line 8 @dad = Dad.find(params[:id])

当妈妈没有直接的身份证明时,是否可以用这种方式使用“爸爸”?你建议我做什么?我需要在妈妈的索引页面上找到@dad.name (以及更多)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-06 15:57:31

用这个:

代码语言:javascript
复制
def index
   @dad = Dad.find(params[:dad_id])
   if params[:q].present?
     @moms = Mom.search(params[:q], page: params[:page], per_page: 25)
   else
     @moms = Mom.none
   end
end

使用params[:dad_id]而不是params[:id]。原因是为MomsController的索引操作生成的路由是:

代码语言:javascript
复制
dad_moms GET    /dads/:dad_id/moms(.:format)          moms#index

params[:dad_id]会给你dad_id作为来自http://localhost:3000/dads/superdad/momssuperdad。在您的例子中,您正在寻找不存在的params:id。因此,错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22896237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档