我有三个模特--妈妈,爸爸和孩子。妈妈和爸爸只通过孩子属于彼此,所以这些协会是这样的:
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我想通过寻找任何一个妈妈,而不仅仅是通过爸爸的孩子,找到爸爸的妈妈:
http://localhost:3000/dads/superdad/moms
resources :dads do
resources :kids
resources :moms
end在我的妈妈控制器中,我试图找到“超级爸爸”的ID:
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但是遇到了这个错误:
Couldn't find Dad without an ID
# line 8 @dad = Dad.find(params[:id])当妈妈没有直接的身份证明时,是否可以用这种方式使用“爸爸”?你建议我做什么?我需要在妈妈的索引页面上找到@dad.name (以及更多)。
发布于 2014-04-06 15:57:31
用这个:
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的索引操作生成的路由是:
dad_moms GET /dads/:dad_id/moms(.:format) moms#indexparams[:dad_id]会给你dad_id作为来自http://localhost:3000/dads/superdad/moms的superdad。在您的例子中,您正在寻找不存在的params:id。因此,错误。
https://stackoverflow.com/questions/22896237
复制相似问题