Html 没有路由匹配缺少必需的密钥:[:id]
我是Rails的新手,似乎也遇到过类似的问题,但我无法解决我的问题 我的路线: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
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