将按钮链接到未显示的页面

时间:2014-08-26 21:04:46

标签: html ruby-on-rails ruby

我已经从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'

1 个答案:

答案 0 :(得分:1)

这两个问题都有相同的原因。但在开始之前,我想指出Rails中有关资源的一些事情。作为the documentation shows,您可以拥有pluralsingular资源。

我无法确定您的资源管理器资源是单数还是复数,但我们假设您的应用程序中只能有一个资源管理器。这意味着您拥有一个独特的资源,在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,因为只能有一个!因此,如果您像我解释的那样调整了路线和控制器,那么您的视图将按原样运行。