2011-12-28 12 views
0

私は、この質問の参考として、Michael Hartlの例題の本でRailsチュートリアルを使用しています。エラールートに[GET] "/ root_path"と一致するルートがありません。3.1.3

ここでは、レール3.1.3を使用しています。名前付きルート

を使用するための最良の方法は何私が使用してビューからこれらのルートにアクセスするとroutes.rbを

root :to => "pages#home" 
    match '/contact', :to => 'pages#contact' 
    match '/about', :to => 'pages#about'  
    match '/help', :to => 'pages#help' 

を私は何のエラーを見つけることが、私は私が手に「about_path」でアクセスしていたときでありますエラー。しかし、本ではabout_pathを使っています。名前付きルートの概念をレール3.1で変更しましたか?

 <li><%= link_to "About", '*about*' %></li> 
     <li><%= link_to "Contact", 'contact' %></li> 
     <li><%= link_to "Home", 'root_path' %></li> 

私は上記のコードで「about_path」を使用している場合、私はエラー「ルートが見つかりません」

質問1.ビュー内の名前のルートを使用するための最良の方法は何を得ますか? (最良の方法は、単一の場所でルートパスを変更するだけでよいことを意味します)

質問2.名前付きルートの概念を使用してルートにアクセスするにはどうすればよいですか? ( 'root_path'を使用してアクセスしようとすると、エラーメッセージが表示されます)

答えて

-1
JP:guard2 jayparteek$ rake routes 
    root/    {:controller=>"pages", :action=>"home"} 
contact /contact(.:format) {:controller=>"pages", :action=>"contact"} 
    about /about(.:format) {:controller=>"pages", :action=>"about"} 
    help /help(.:format) {:controller=>"pages", :action=>"help"} 

経路

match '/contact' => 'pages#contact' 
    match '/about' => 'pages#about'  
    match '/help' => 'pages#help' 

    root :to => "pages#home" 
3
  • ルートが最初であることを確認してください。

  • コマンドラインでrake routesと入力して、どのルートと_path変数があるかを確認してください。

  • (根を除いて! - そこ:doを残す):to年代のが、=> THER hashrocketを残す "を取り除くの見解

    <li><%= link_to "About", 'about' %></li> 
         <li><%= link_to "Contact", 'contact' %></li> 
         <li><%= link_to "News-Home", '/' %></li> 
    

    から名前付きルートへのアクセス

+0

rootの名前付きルートとは何ですか?私はroot_pathを使用するとエラーが発生します。 "ルートは[GET]"/root "にマッチしません" –

+0

私は 'ルート'を使用するとエラーが発生します 'ルートは[GET]と一致しません "/ root"' –

+0

働くありがとうマイケル –

5

"arround ... _パスを省略しなければならないと思います。

+0

ええ、右のAixは、レールのすべての新しいバージョンが異なる設定をしています。 –

+0

ヘルパーメソッドは一度も引用されていません。 – mark

1

すなわち.erbファイルでこれを使用し、パス変数から引用符を削除します。

<li><%= link_to "About", about_path %></li> 
    <li><%= link_to "Contact", contact_path %></li> 
    <li><%= link_to "Home", root_path %></li> 
+0

これは質問の適切な解決策であることがわかりました。素晴らしい感謝の作品User * – Proxy32

2

(1)=> 'についてのページ#' 'について/' routes.rbを

試合で

は、パス名を保存する変数 about_pathを自動的に作成します。パス名は、あなたのURLとは異なります。ルーティングステートメントは文字通り、人がをURLとして入力したときに、のアクションを取ることがコントローラページにあると、レールに指示するように指示します。さらに、その命令は暗黙の名前付きルート about_pathに保存されます。レールはメソッド名を文字列 _pathに連結することによって作成され、ユーザーの介入なしに作成されます。

(2)あなたがで...アプリ/ビュー/レイアウト/ _footer.html.erb

  • <% =のlink_to "について" という変数を使用することになり、about_path%>
  • と同上で...アプリ/ビュー/レイアウト/ _header.html.erb

    (3)では...仕様/要求/ static_pages_spec.rb、あなたは

    DESCRを使用します。 「ページについて」IBEは

    {about_path訪問}前
    を行うと、あなたが本当にルーティングを理解していればはい、あなたはレールのデザインの90%を理解するので、あなたは裏返しroutes.rbをの内容を理解していることを確認してください。

    関連する問題