无法使用'id'=找到[model name] - 如何找到具有has_many关联的id - Rails 4

时间:2016-07-16 18:38:01

标签: ruby-on-rails-4

我道歉,如果这看起来像是一个简单的错误,我是铁道新手,您的建议和帮助将不胜感激。

  • 我有模型UserAdvert
  • 用户has_many广告
  • 广告belongs_to用户
  • advert是用户
  • 下的嵌套资源
  • 我在托管终端时创建的userid:10
  • 我在托管终端时创建的advertid:6
<{1>}中的

,我正在尝试找到user's controller的{​​{1}}。我尝试过以下方法:

  • id
  • advert
  • @advert = Advert.find(params[:id])

但没有成功。我不断得到以下的错误:

@advert = Advert.find(params[:advert_id])

@advert = @userr.adverts.find(params[:id])

我发现代码正在寻找带有Couldn't find Advert with 'id'=10 [WHERE "adverts"."userr_id" = ?] 的广告,当我真的想让它找到Couldn't find Advert with 'id'=10

的广告时

在我的users_controller.rb

id:10

在我的路线文件

id:6
  

表示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 &amp; has_many)。我怎么找到   用户控制器中广告的ID。这是一个问题我   一直在努力解决。你的建议将不胜感激

1 个答案:

答案 0 :(得分:1)

我不确定您的控制器中哪里出现此错误,哪些操作会导致问题。但是,这是一个用于属于主题的书签类的创建方法的示例,并且主题具有许多书签。

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

您可以看到我找到与书签关联的主题,然后在找到用于创建关联的书签时使用该主题。书签params是一种私人方法。然后我将当前用户分配给书签。

查看广告和用户的完整控制器会很有帮助