0

私は ruby​​ on rails の初心者で、オンライン チュートリアルに従っていました。ルートですぐに迷子になりました。URL 'pages/help' にアクセスしようとするたびに、ブラウザに「The action 'show' could not be found for PagesController」というエラーが表示されます。これらのコードを含む _header という名前の ruby​​ パーティションがあります。

<header>
    <%= link_to logo, root_path %>


    <ul class="nav nav-tabs">
      <li class="active">
        <%= link_to "Home |", root_path %>
      </li>

      <li><%= link_to "Help |", pages_help_path %></li>
      <li><%= link_to "Sign In", '#'%></li>
    </ul>
</header>

「ヘルプ」リンクをクリックしようとすると、エラーが発生します。

私の routes.rb には、次のコードのみが含まれています。

BakeShop::Application.routes.draw do

  resources :pages
  root :to => 'pages#home'

  #match '/help', :to => 'pages#help'
  get "pages/help"
end

そして、私はこれらのコードのみを持つ PagesController を持っています:

class PagesController < ApplicationController
  def home

  end

  def help

  end
end

「rake routes」を実行すると、含まれるリストは次のとおりです。

     pages GET    /pages(.:format)          pages#index
           POST   /pages(.:format)          pages#create
  new_page GET    /pages/new(.:format)      pages#new
 edit_page GET    /pages/:id/edit(.:format) pages#edit
      page GET    /pages/:id(.:format)      pages#show
           PATCH  /pages/:id(.:format)      pages#update
           PUT    /pages/:id(.:format)      pages#update
           DELETE /pages/:id(.:format)      pages#destroy
      root GET    /                         pages#home
pages_help GET    /pages/help(.:format)     pages#help

確かに、ビュー フォルダーに home.html.erb と help.html.erb が作成されています。そしてひねりは、ビューフォルダーに「show.html.erb」を作成し、ページコントローラーに「show」という名前のアクションを作成すると、エラーが消えてにリンクすることです。

だから私が言いたいのは、誰かこれを説明できますか?Rails が、私が定義していない「ヘルプ」アクションではなく「表示」アクションを探しているのはなぜですか

4

3 に答える 3

0

routes.rb でデフォルトのルートを有効にする必要があります。

routes.rb を更新します:-

BakeShop::Application.routes.draw do

  リソース:ページ
  root :to => 'pages#home'

  #match '/help', :to => 'pages#help'
  get "pages/help" #これは必須ではありません
match ':controller(/:action(/:id(.:format)))'
終わり
于 2013-08-19T06:18:30.030 に答える