12

入力するとき

 rake routes 

たくさんのルートが出てきますが、それらはどこで定義されていますか???

いくつかはデフォルトであることは知っていますが、他のものはどうですか?

たとえば、これはコントローラーからのスクリプトです。do_something から 's' を取り除こうとしましたが、機能させることができません....それらは別の場所でも定義されていますか? また、いつパラメータを取得し、いつ取得しないのか、どうすればわかりますか? ありがとう!

def hello
  redirect_to do_things_shop_path(shop)
end

def do_things
end
4

1 に答える 1

21

Railsルーティング構成はconfig/routes.rbファイルに保持されます。

パラメータを取ることは多くのものに依存します。rake routesルートテイクパラメータで表示されます。メンバーのアクションはパラメーターを取ります。

posts    GET        /posts(.:format)          posts#index
         POST       /posts(.:format)          posts#create
edit_post GET       /posts/:id/edit(.:format) posts#edit

最後の行では、のようにURLを設定しposts/:id/editます。このパスには:idパラメーターが必要です。このルートはさまざまな方法で呼び出すことができます。それらの1つは次のようなものです:

edit_post_path(@post)

カスタムアクションを作成する場合(たとえば、投稿コントローラーの下)、次のように宣言できます。

match `/posts/:id/things_with_id`, :to => 'posts#do_things_with_id', :as => 'do_things_with_id
match `/posts/things_without_id`, :to => 'posts#do_things_without_id', :as => 'do_things_without_id

最初のIDはIDを必要としますが、2番目のIDは必要ありません。それに応じてそれらを呼び出します:

do_things_with_id_path(@post)

do_things_without_id()

リソースの場合、メンバーとコレクションのアクションを使用してこれらを簡単に作成できます。メンバーアクションにはIDが必要ですが、コレクションアクションには必要ありません。

resources :posts do 
  member { get 'do_thing' }
  collection { get do_things' }
end

あなたがそれを手に入れたことを望みます。

ちなみに、これらを明確に理解したい場合は、以下のガイドを読む必要があります。 http://guides.rubyonrails.org/routing.html

于 2012-11-15T03:48:40.137 に答える