Ruby on rails 4 不能';找不到带有';id';=-如何定位具有多个关联的id-Rails 4

Ruby on rails 4 不能';找不到带有';id';=-如何定位具有多个关联的id-Rails 4,ruby-on-rails-4,Ruby On Rails 4,如果这看起来像是一个简单的错误,我很抱歉,我是rails的新手,非常感谢您的建议和帮助 我有用户和广告 一个用户有许多广告 广告属于用户 广告是用户下的嵌套资源 当我签入终端时,我创建的用户具有id:10 当我签入终端时,我创建的advert具有id:6 在用户控制器中,我试图找到广告的id。我尝试了以下方法: @advert=advert.find(参数[:id]) @advert=advert.find(参数[:advert\u id]) @advert=@userr.adverts.

如果这看起来像是一个简单的错误,我很抱歉,我是rails的新手,非常感谢您的建议和帮助

  • 我有
    用户
    广告
  • 一个用户有许多广告
  • 广告属于用户
  • 广告是用户下的嵌套资源
  • 当我签入终端时,我创建的
    用户
    具有
    id:10
  • 当我签入终端时,我创建的
    advert
    具有
    id:6
用户控制器中
,我试图找到
广告的
id
。我尝试了以下方法:

  • @advert=advert.find(参数[:id])
  • @advert=advert.find(参数[:advert\u id])
  • @advert=@userr.adverts.find(参数[:id])
但是没有成功。我不断得到以下错误:

Couldn't find Advert with 'id'=10 [WHERE "adverts"."userr_id" = ?]

我看到代码正在寻找id为10的广告,而我实际上希望它找到id为6的广告

在my users_controller.rb中

def dashboard
  if current_user
    if current_user.adverts.present?
      @advert = Advert.find(params[:id])
    end
  else
    redirect_to error_path
  end
end
在我的路由文件中

Rails.application.routes.draw do
  devise_for :users 
  resources :users do
    resources :adverts 
    member do
      get 'dashboard'
    end
  end
end
因为
有很多关系(
用户有很多广告
&
广告属于用户
)。我如何定位 用户控制器中广告的id。这一直是我关注的问题 一直在努力解决。如蒙指教,不胜感激


我不确定您在控制器中的何处获得此错误,哪些操作导致了问题。但是,下面是一个书签类的创建方法示例,该书签类属于一个主题,并且一个主题有许多书签

def create
  @topic = Topic.friendly.find(params[:topic_id])
  @bookmark = @topic.bookmarks.build(bookmark_params)
  @bookmark.user_id = current_user.id


  if @bookmark.save
    flash[:notice] = "Bookmark saved."
    redirect_to [@topic, @bookmark]
  else
    flash.now[:alert] = "Error saving bookmark."
    render :new
  end
 end
您可以看到,我找到了与书签关联的主题,然后在找到书签时使用该主题来创建关联。book mark params是一个私有方法。然后我将当前用户分配给书签


看到您的广告和用户的完整控制器将很有帮助

我认为这是您的路由问题。如果您的dashboard成员路由嵌套在user下,那么它应该生成一个users/:id/dashboard的路由,因此广告id不能作为参数使用。我会在您的命令行中运行“rake routes”进行调查
def create
  @topic = Topic.friendly.find(params[:topic_id])
  @bookmark = @topic.bookmarks.build(bookmark_params)
  @bookmark.user_id = current_user.id


  if @bookmark.save
    flash[:notice] = "Bookmark saved."
    redirect_to [@topic, @bookmark]
  else
    flash.now[:alert] = "Error saving bookmark."
    render :new
  end
 end