9

Ruby on Railsをインストールして、というスキャフォールドを作成しましたposts。RoRは私のためにコントローラーと他の必要なファイルを生成しました。

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

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

を確認しましたroutes.rbが、設定がありません。

更新しました:

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

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

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

4

5 に答える 5

9

探しているドキュメントは、Rails Routing From theOutsideInです。これを読むと、Railsがリクエストを受け取り、コントローラーのメソッドにポイントするために行うすべてのことを理解できます。

于 2011-10-06T00:49:54.670 に答える
6

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

# Previous routes
# resources :posts

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

ルーティングに関するこのRailsガイドをご覧ください。Railsのルーティングを理解するのに役立ちます。

于 2011-10-06T00:51:09.433 に答える
4

これにより、次のルートで有利なスタートを切ることができます:http: //guides.rubyonrails.org/routing.html

作成するすべてのメソッドに独自のパスがあるわけではなく、railsは残りの原則に基づいて構築され、scaffoldはpostコントローラーでインデックスやshowなどのパスをたどるメソッドを作成します。

メソッドにルートを追加するように強制することもできますが、実際には、規則に従う方がはるかに簡単であるため、実際に追加する必要はほとんどありません。

于 2011-10-06T00:49:33.510 に答える
3

Rails3.xでは

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

example.com/posts/helloで入手可能

于 2011-10-06T00:47:15.130 に答える
1

足場を使用して投稿を生成するresources :postsと、routes.rbファイルに行が追加されました。その行は、生成されたすべてのコントローラーアクションのルートを構成します。カレブが上で述べたように、すべてのアクションに専用のパスがあるわけではありません。railsはHTTPメソッドも考慮に入れるため、単一のパスは複数のアクションに対応できます。したがって、たとえば、HTTPメソッドを使用したパス/postsGETコントローラーアクションindexに対応し、HTTPメソッドを使用した同じパスPUTはコントローラーアクションに対応しますupdaterake routesコンソールから実行すると、これらの関連付けを確認できます。Rails Guidesはよく読んでいて、ルートを理解するのに役立つというヨルダンとカレブに同意します。

于 2011-10-06T04:18:10.527 に答える