Ruby on rails 不能';找不到带有';id'=
当我尝试加载Ruby on rails 不能';找不到带有';id'=,ruby-on-rails,Ruby On Rails,当我尝试加载show视图,显示已创建的“wiki”时,我收到错误消息找不到具有“id”的wiki= 它特别指向控制器中的第二行: def show @wiki = Wiki.find(params[:id]) ## shows the error in this line end def index @wikis = Wiki.all end 以下是我的看法: <h1><%= @wiki.title %></h1> <h3><%=
show
视图,显示已创建的“wiki”时,我收到错误消息找不到具有“id”的wiki=
它特别指向控制器中的第二行:
def show
@wiki = Wiki.find(params[:id]) ## shows the error in this line
end
def index
@wikis = Wiki.all
end
以下是我的看法:
<h1><%= @wiki.title %></h1>
<h3><%= @wiki.body %></h3>
为什么我会收到此错误消息,如何才能获得要加载的视图
谢谢。没有:id参数,除非您根据路由设置明确传递它。也就是说,您必须转到
/wikis?id=
,这可能不是您想要的。考虑一个更标准的资源路由设置:
Rails.application.routes.draw do
resources :wikis
devise_for :users
get 'welcome/index'
root 'welcome#index'
end
它允许您转到显示路由的
/wikis/
(即控制器中的wiki\u路径(@wiki)
),并为您正确定义索引
,创建
等路由 您的参数[:id]
很可能是nil
,除非您像/wikis/show?id=123
那样传递它,因为路由获取“wikis/show”
没有任何参数
最常见的方法是使用
资源:wiki
和类似/wikis/123
的路由,因为您没有将wiki
的id传递到show链接中,所以最简单的解决方案是提供id:
<%= link_to wiki.title, wikis_show_path(id: wiki) %>
在您的routes.rb中。这样,链接到单个wiki
show页面也更简单:
<%= link_to wiki.title, wiki %>
您可能需要阅读。在您的路线中添加此行
resources:wiki
并删除此代码:
get'wiki/index'
获取“Wiki/show”
获取“Wiki/new”
获取“维基/编辑”
获取“wiki/create”
现在您可以在url中写入:websitename.com/wikis到索引,websitename.com/wikis/id,websitename.com/wikis/id/edit到编辑。。。并获取您的身份证参数
阅读此链接中有关资源的更多信息:您尝试获取的url是什么?你们的路线是什么?服务器日志是什么?参数中是否有任何值传递请参见rails控制台在主要问题中添加了路由。谢谢你指出这一点。@pitabasprathal,是的,当我检查rails控制台时,它们有一个id、标题和正文。为什么不使用
参考资料:wiki
,而不是单独定义每条路线?顺便说一句,create
操作可通过get
?这很糟糕。我将路由更改为上面的示例,但仍然收到相同的错误消息。@sergio相应地更改链接。顺便问一下,既然您没有将wiki
id传递到任何地方的链接,您希望它如何工作?您是否将wiki\u show\u路径更改为wiki\u路径(@wiki)
?url帮助器需要知道链接到哪个wiki对象。因此,我如上图所示更改了路由,但现在这样做时,索引视图不会显示,而是显示“显示”视图。我强烈建议留出一些时间阅读Rails路由指南。另外,在您的控制台中键入rake routes
,它将显示一个路由列表:控制器操作和命中这些路由的相应URL。
resources :wikis
<%= link_to wiki.title, wiki %>