我已经从https://github.com/lockitron/selfstarter克隆了回购邮件,我正在尝试创建标题中新页面的链接,但链接没有显示
我想在标题中创建一个“浏览”按钮,所以我创建了一个浏览器控制器和模型运行迁移,并在标题partial中使用了link_to helper方法来创建链接到页面的新按钮,但它没有显示出来。如何做我显示我的“探索”按钮,该按钮链接到资源管理器文件夹
中的“show.html.erb页面”的routes.rb
resources :explorer
explorer_controller
class ExplorerController < ApplicationController
def show
end
end
show.html.erb
<p> hello </p>
header.html.erb
<div id="header">
<%= link_to 'Explore, explore_path %>
</div>
我也收到以下错误
ActionController::UrlGenerationError in Preorder#index
Showing /Users/views/preorder/_header.html.erb where line #2 raised:
No route matches {:controller=>"explorer", :action=>"show"} missing required keys: [:id]
Extracted source (around line #2):
1 <div id="header">
2 <%= link_to 'Explore', explorer_path %>
3 <div class="wrapper clearfix">
4 <h1 id="lockitron_header"><a href="/"><%= Settings.product_name %></a></h1>
Trace of template inclusion: views/layouts/application.html.erb
Application Trace | Framework Trace | Full Trace
app/views/preorder/_header.html.erb:2:in `_app_views_preorder__header_html_erb___3778671432332580621_70190937023480'
app/views/layouts/application.html.erb:15:in `_app_views_layouts_application_html_erb___270280154590328587_70190919949800'
答案 0 :(得分:1)
这两个问题都有相同的原因。但在开始之前,我想指出Rails中有关资源的一些事情。作为the documentation shows,您可以拥有plural或singular资源。
我无法确定您的资源管理器资源是单数还是复数,但我们假设您的应用程序中只能有一个资源管理器。这意味着您拥有一个独特的资源,在routes.rb
:
resource :explorer
Rails现在假设控制器以复数形式命名,探险家。打开终端并运行rake routes
。您将看到路径映射到的所有可用路径和控制器。
您的控制器位于app/controllers/explorers_controller.rb
,如下所示:
class ExplorersController < ApplicationController
def show
end
end
回到你的问题。由于错误导致_header
部分无法呈现:
没有路由匹配{:controller =&gt;&#34;资源管理器&#34;,:action =&gt;&#34;显示&#34;}缺少必需的密钥:[:id]
此错误表示您需要在路径中提供Explorer
记录(或其ID),以便Rails知道要链接到哪个资源管理器。然而,这仅在多个资源的情况下才是真实的。
如果是单一资源,您不需要提供其ID,因为只能有一个!因此,如果您像我解释的那样调整了路线和控制器,那么您的视图将按原样运行。