Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 没有路由匹配缺少必需的密钥:[:id]_Html_Ruby On Rails_Ruby_Path_Routes - Fatal编程技术网

Html 没有路由匹配缺少必需的密钥:[:id]

Html 没有路由匹配缺少必需的密钥:[:id],html,ruby-on-rails,ruby,path,routes,Html,Ruby On Rails,Ruby,Path,Routes,我是Rails的新手,似乎也遇到过类似的问题,但我无法解决我的问题 我的路线: resources :users do resources :items end 我的模型: class Item < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_many :items end class项到GRIP。明亮的 resources :users do r

我是Rails的新手,似乎也遇到过类似的问题,但我无法解决我的问题

我的路线:

resources :users do
    resources :items
end
我的模型:

class Item < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
   has_many :items
end
class项
HTML:



正在传递对象
,而不是所需的id

<td><%= link_to "Edit", edit_user_item_path(item.id) %></td>

您在以下路径中错过了
用户id

edit_user_item_path(user_id, item)

格式您可以找到刚刚运行的
bundle exec rake routes | grep edit_user_item

您还需要包含用户,因为它是嵌套路由。比如:

<td><%= link_to "Edit", edit_user_item_path(@user, item) %></td>

问题在于您正在使用嵌套资源:

resources :users do
   resources :items
end
因此,当您有链接时:

<%= link_to "Edit", edit_user_item_path(item) %> 

您可以查看上面的路由并使用链接进行检查,您将看到它没有
user\u id
。这是主要原因

这不应该是:编辑用户项目路径(item.user,item)?您可以这样做,但您通常使用嵌套路由,因为您希望分配要在视图中使用的
@user
变量。如果您没有使用
@user
,那么您可能不需要嵌套路由。是的,这是有道理的。您能告诉我使用表单的情况吗?我应该放什么?
文档在这里:这帮助我“点击”所有的信息,非常感谢。我从来没有考虑过将代码输出>捆绑Excel RAKE路由< /代码>到GRIP。明亮的
resources :users do
   resources :items
end
<%= link_to "Edit", edit_user_item_path(item) %> 
edit_user_item GET    /users/:user_id/items/:id/edit(.:format) items#edit