0

尝试链接到“user_annversary_path”并且正在传递不正确的周年纪念路径。user_id 是正确的(2)但 id(周年纪念日)应该是 1。

ActiveRecord::RecordNotFound in AnniversaryController#show

Couldn't find Anniversary with id=2
Rails.root: /Users/nelsonkeating/Desktop/ReminDeal

Application Trace | Framework Trace | Full Trace
app/controllers/anniversary_controller.rb:10:in `show'
Request

Parameters:

{"user_id"=>"2",
 "id"=>"2"}

周年纪念控制器

  def show 
      @user = current_user
      @anniversary = Anniversary.find(params[:id])
    end

查看触发传入的参数不正确的代码

<%= link_to "Anniversary", user_anniversary_path(@user) %>

路线

  resources :users do
      resources :anniversary
    end
4

2 回答 2

2

对于user_anniversary_path,您需要传入两个参数:一个User对象(或表示User对象的 id)和一个Anniversary对象(或表示Anniversary对象的 id)。例如,您可以这样做:

user_anniversary_path(User.first, Anniversary.first)

或这个:

user_anniversary_path(1, 2)

对象的在哪里,并且1是对象的。我真的建议坚持将整个对象传递给此方法。idUser2idAnniversary

当您尝试 Trent 的示例时它失败的原因是因为@anniversary在您调用该路由助手的操作中为零。请注意这一点。

于 2012-06-13T06:24:14.633 回答
0

周年纪念日是否嵌套在您的 routes.rb 中的用户中?如果是这样,请尝试与用户一起传递周年纪念日。

<%= link_to "Anniversary", user_anniversary_path(@user, @anniversary) %>

另外,为什么不直接从视图中传入 current_user 呢?它是不可访问的吗?

<%= link_to "Anniversary", user_anniversary_path(current_user, @anniversary) %>

有关详细信息,请参阅http://guides.rubyonrails.org/routing.html#nested-resources 。

于 2012-06-13T06:01:07.693 回答