2011-02-02 20 views
0

私はrailstutorial.orgのMichael Hartlのスクリーンキャストに従っています。私はわずかなビットのPHP、html、CSSの経験があり、私はbashコマンドで大丈夫ですが、オブジェクト指向の言語は全く新しいものです。Railstutorial.org Ruby on Railsルーティングの問題

問題は次のとおりです。私はsample_appというアプリを持っています。

.../sample_app$ rails generate controller Pages home contact 

さて、私はroutes.rbを見たとき:

SampleApp::Application.routes.draw do 

    get "pages/home" 

    get "pages/contact" 

そして私は私が見pages_controllerを見て:私は行くことにしようとすると

class PagesController < ApplicationController 

     def home 
     end 

     def contact 
     end 
end 

コマンドラインから"localhost:3000/pages/home"に次のエラーページが表示されます。

Routing Error

No route matches "/pages/home"

私は、フォルダの公共の静的なHTMLファイルを作成し、それはどちらかロードするために得ることができなかったので、ここで起こって何か他のものがある疑いを持っている:

ここに私の静的なページが公開中だ。

<html> 
<h1> TACO!</h1> 
    <body> 
     <p> testing <p> 
    </body> 
</html> 

そして、私は移動しようとしたときには "localhost:3000/taco.html" に私は同じエラーの種類を取得:道のローカルホストで::

Routing Error

No route matches "/taco.html"

  • EDITそれだけで3000をDOE "index.html"、 "welcome to rails blah"のページをロードしてください。

これを把握しようとしているのは驚いています。私はこれが超簡単な修正か、何かがひどく間違っていると感じています。 のRails 3.0.3 ルビー1.8.7(2010-01-10パッチレベル249)[i486の-linuxの] 宝石1.4.2

をどれ:だけ知っているので、どちらか一方...

アイデア?これはRTFMのようなものかもしれませんが、もし私に言えば、私はもっともっと見ていきます...

答えて

0

私はそれを理解しました。私はダミーです。レールはまだ私の古いアプリからバックグラウンドでサーバーを実行していた...

そして私はそれも私がそれを知っていないと起こったか知っていると思う。私は他のアプリのためにサーバを起動したとき、私は私がやって覚えていると思う:

rails s & 

私は、ターミナルウィンドウを使用し続けることができるように。

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
ruby1.8 20667 kevin 5u IPv4 7193288  0t0 TCP *:3000 (LISTEN) 

をので、私はでそれを殺した:しかし、それは簡単にだから私はoutputed

lsof -i :3000をした

CtrlキーC.バックダウンサーバーをシャットダウンすることができないという問題が生じる

kill -9 20667 

Googleから少しの助けを借りてもちろん...甘い!助けてくれてありがとうございました。それは他の誰かの終わりであって、私のものではないことが分かっていたことを知っていて、いいスタートでしたし、とにかくその文書をふるい分けることで他の多くのことを学びました...

+0

また、レールがその端末ウィンドウ内のすべてをログに記録しているとは思っていませんでした。 – Kevin

0

これまでのところあなたのアプリを再作成してもうまくいけば、Railsのインストールを確認することをお勧めしますと宝石ファイル。

EDIT。私はレール3を使用しており、それは正常に動作します。

0

これは、使用しているチュートリアルがRails 2チュートリアルのようです。 Rails 3ではルーティング言語が変更されました。あなたが望むものは、このように見えます。

SampleApp::Application.routes.draw do 
    match "/home" => "pages#home" 
    match "/contact" => "pages#contact" 
end 

はその後、 "アプリ/ビュー/ページ/ home.html.erb" や "アプリ/ビュー/ページ/ contact.html.erb" を作成します。/homeまたは/ contactに行くと、これらの2つのhtmlファイルに入れたものはすべて提供されます。変数は、コントローラファイルapp/controllers/pages.rbに定義されています。あなたが定義した場合:

def contact 
    @contact = 'John Smith' 
end 

次に、「app/views/pages/contact.html.erb」でこれにアクセスできます。

<h1>Contact name: <%= @contact %></h1> 
+0

チュートリアルのスクリーンキャストでは、MichaelはRails 3.0.0のリリース候補を使用しているので、その時点で古いルーティング言語を使用していた可能性があります。私は混乱しています:なぜ私のバージョン(レール3.0.3は私のために古いルーティング言語を作成しました、私は "レールはコントローラのページの家の連絡先を生成した")? – Kevin

+0

私は迷惑ではないと思うが、私はあなたに私の宝石リスト、または他の何かを示しましたか?私はここで正しい軌道に乗って、私はもう少し自己教えることができるでしょうが、これは今すぐ私のためのまっすぐ野生の西です... – Kevin

+0

getあなたがリクエストの種類について明示的にしたい場合は、完全にうまくいきます。get/post、p.ex. get/pages /に指定されていれば値(=> "xxx")は必要ありません。 – simonwh

0

答えを投稿してくれてありがとう同じ問題が発生します。私はそれが何であるか分かりませんが、サーバーを実行して端末を閉じて$ rails generate controller Pages home contactを実行してから$ rails serverを実行した後、localhost:3000/pages/homeが81ページに示すように動作しました。

興味深いもの: