2011-10-06 5 views
8

Ruby on Railsをインストールし、postsという足場を作成しました。 RoRが私のためにコントローラやその他の必要なファイルを生成しました。Ruby on Railでルートを変更するには?

posts_controllerに新しいメソッドを作成しましたが、アクセスできません。コントローラにある他のメソッドを見て、/posts/[MY POST ID]/[MY METHOD NAME]でアクセスする必要があるように見えます。

カスタムメソッドhelloをコントローラに作成したとしますが、どのようにアクセスしますか?

私はroutes.rbを見ましたが、設定はありません。

更新日:

私は手動routes.rbでそれを設定することができますことを理解し、どのように他のすべてのメソッドが動作していますか?たとえば、「posts_controller.rb」コントローラに「edit」と「update」メソッドがあります。ルートを設定することなく、これらの2つの方法はどのように機能しますか?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

/posts/[0-9]/editパターンに一致する構成が見つかりません。 example.com/posts/hello

答えて

9

お探しのドキュメントはRails Routing From the Outside Inです。これを読んだら、Railsがリクエストを受け取り、コントローラ内のメソッドを指すようにするすべてのことを理解するでしょう。

3
のRails 3.xでは

match 'posts/hello' => 'posts#hello'

これは、ルート上の開始あなたに良い頭を与える:http://guides.rubyonrails.org/routing.html

必ずしもすべてメソッドは独自のパスを持ち、レールは残りの原則に基づいて構築され、足場はインデックス、ショーなどのパスに従うポストコントローラのメソッドを作成します。

あなたのメソッドにルートを追加さ​​せることができますが、現実には慣習に従うのがはるかに簡単であるため、実際にはそうする必要はほとんどありません。

4

の利用可能な

5

routes.rbへのルートを追加する必要があります。例:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

このRails guide about routingを見ると、Railsルーティングの理解に役立ちます。

1

スカフォールドを使用して投稿を作成したときに、ファイルにresources :postsという行が追加されました。その行は、生成されたすべてのコントローラアクションのルートを設定します。上記のようにカレブに言及されているように、すべての行動に専用の道があるわけではありません。レールはHTTPメソッドも考慮に入れているため、単一のパスは複数のアクションに対応できます。たとえば、HTTPメソッドGETのパス/postsはコントローラアクションindexに対応し、HTTPメソッドPUTの同じパスはコントローラアクションupdateに対応します。コンソールからrake routesを実行すると、これらの関連付けが表示されます。私はJordanとCalebに、Railsガイドは良い読書であり、ルートの理解に役立つことに同意します。

+0

//ありがとうございました! 1行のコード(リソース:投稿)を読むだけでRORはルートをどのように設定しますか? – Moon

+0

私はソースコードを見て、Railsの動作を正確に見ていませんが、リソースを使用するとRailsは7つのルートを設定します。前述のガイドのセクション2.2を確認してください:http://guides.rubyonrails.org/routing.html – John

+0

ルートの基本については、これよりも詳しい説明はありません。https://www.youtube.com/watch? v = g3SuV-A9bak&index = 3&list = PLAC08CE3187BC75F1 – Mauddev

関連する問題