2016-04-30 11 views
0

私は一般的にプログラミングを始めています。誰かがrailstutorial.orgに私を紹介しました。Railsチュートリアル - ルートを認識するためのレールを取得できません

仕様:私はチュートリアルで提案されているように、cloud9 IDEで作業しています。

情報:私は1.3のルートチュートリアルでルートルートを設定しています。 問題は最初は私のルートがサーバーの起動に影響を与えなかった(ルートページはまだrubyのデフォルトであり、 'application#hello'ではなく)。チュートリアルで編集したファイルは次のとおりです。

routes.rbを

Rails.application.routes.draw do 
root to: 'application#hello' 
end 

application_controller.rb

class ApplicationController < ActionController::Base 
protect_from_forgery with: :exception 
def hello 
render text: "Hello, world!" 
end 
end 

私は取り残さファイルにデフォルト設定された多くのコメントがあります。

私は指示に正確に従っています。最初に問題が発生した後、インストールエラーが発生した可能性があるので、IDEを削除して再起動しました。特にバージョンに細心の注意を払って再起動しました。

私は$レーキルートを試してみました、そして私の理解では、それはメッセージを表示します。問題はroutes.rbをファイルであると信じて私をリード

You don't have any routes defined! 

を。私はそのようなことはアプリケーションを使用してどのように動作するかのように、全体の多くを知らないので、私も試してみました

root to: 'application#hello' 

:私はに構文を変更しようとしている

root 'ApplicationController#hello' 

root to: 'ApplicationController#hello' 

これらはすべて、ルートが定義されていないメッセージになります。私は何が起こっているのか分かりません。

ご協力ありがとうございます。

+0

'ルートをコーディング

ハッピー:「アプリケーション#のhello''と'ルート」アプリケーション#のhello''はまったく同じことを行う - 後にはショートカットです。 'root 'ApplicationController#hello''は、レールがコントローラを検索する方法のせいで動作しません。 – max

答えて

1

あなたのルートでroot 'application#hello'を試すことができます。また、ブラウザで物事を試す前にファイルを保存するのを忘れるというような簡単なことを始めるときには、サーバーを再起動すると驚くほど多くの虚偽のものが発生します。

rails documentationは、チュートリアル以外の情報も提供します。

+0

ありがとう!ファイルを保存しましたが、現在は動作しています。おそらく2時間の不満の価値があり、それは簡単なファイル保存によって解決されます。 – ncooper09

+0

うれしいこと: – gonzalo2000

1

あなたはおそらく別のコントローラにApplicationControllerの外でそのアクションを移動したいのですが、あなたが本当に主張するならば、あなたはroutes.rbにこれを置くことができます。

get '/hello', to: 'application#hello', as: :hello

ページになりたい場合はroot、私はStaticPagesControllerを作成し、ApplicationControllerの中に入れる代わりにhelloを定義することをお勧めします。ここで

あなたが何ができるかです:あなたStaticPagesController.rbインサイド

  1. 実行rails g controller static_pages

  2. ApplicationControllerの中にあった、あなたのhello方法をコピーして貼り付けます。

  3. routes.rbroot 'static_pages#helloに変更してください。

です。希望の結果が得られるはずです。

+0

railstutorialはこれを最初の章で行います。ここでは、この使い捨てアプリを作成して何かを稼働させるだけです。そのよりクレイパーな部分の1つ。もちろん、アプリケーションのすべてのコントローラに 'hello'アクションを与えているので、' ApplicationController'でこれをやりたいとは思わないでしょう。 – max

1

私は同じチュートリアルに従っており、最初の2つの章で扱われている資料は、初心者であればかなり複雑であると言えるでしょう。チュートリアル全体を完了した後でさえ、このルーティングのこと(またはこれらの章のその他の詳細は実際にどのように機能するか)が実際にどのように機能するかが明確になるでしょう。 しかし、ルーティングのこのアイデアは非常に重要なので、チュートリアルの初期段階にあっても、どのように動作するかを理解することは悪い考えではありません。


あなたがレールにルートを作成することができる方法を使用すると、第1のハッシュ記号(、続いて、適切なパスとコントローラの名前を適切HTTP verbGETPOSTPATCHDELETE)を指定することです#)とコントローラーで定義されているアクションの名前。

ここでcontrollerはルビクラスであり、ルビメソッドです。 (Ruby on Railsの基本的な原理は"convention over configuration"あるので、それはcontrolleractionroutingなどのような専門用語に慣れることが重要です...)

あなたは

get '/hello' => "application#hello" 

(はい、あなたができると言うときtakerihoが示唆するように何が起こるかはタイプ/helloのURLにGET要求(www.example.com/のように/が「ルートパスは」(最後に/に注意してください))ACTIにルーティングされますということです、)to:の代わりに=>を使用コントローラに定義されたhelloという名前のメソッドまたはメソッド、またはApplicationControllerという名前のクラスです。

application_controller.rbを見ると、helloというメソッドがApplicationControllerに定義されていることがわかります。

class ApplicationController < ActionController::Base 
    ..... 

    def hello 
    render text: "Hello, world!" 
    end 
end 

は今、あなたがあなたの元の質問であるルートのルートを、指定したい場合は、あなただけのコントローラ、ハッシュ記号(#)の名前が続くrootを行うには、名前のことができますクラス。だから、コード

root "application#hello" 

は、それがレールの大会に呼ばれていますようフォーム/、またはroot_pathのURLへのリクエストは、コントローラで定義された名前のアクション(またはメソッド)helloにルーティング(または取得することを意味しますあるクラス)ApplicationController。あなたは

get '/' => "application#hello", as: :root 

(あなたがas: :custom_nameを追加することで、ルートに名前を付けることができます)が、レールは2が等価であることを知っているのに十分にスマートであることによって、同じ結果を達成することができます。タスクは、レールの規則に従い、より簡単になります。


あなたがレールに完全に新しいしている場合は、私は非常にあなたが完全な初心者のためではない、作者が示唆するように、Railsのチュートリアル上のルビーを通過する前にPragmatic StudioでRailsのコースをチェックアウトをお勧めします。このアプローチは私にとって完璧に機能しました。 Pragmatic Studioが提供するレイルコースは、プログラミングについての事前知識がないと仮定し、基本的な説明を私がこの答えで行ったよりはるかに明確に説明します。 :)

+0

ありがとうございました! @ gonzalo2000は実際に私が提起した質問を解決するのを助けました。サーバーを再起動する前に保存するだけでした。 Visual Studioでいくつか作業しましたが、IDEからサーバーを起動してもファイルを保存する必要はありません。 Railsチュートリアルで使用されているメソッドがIDEの外で起動し、IDEにあるように保存されたファイルにアクセスすることは明らかです。私は間違いなくPragmatic Studioを見ていきます。 – ncooper09

関連する問題