0

私は以前にこのトピックに関連する質問もしましたが、その質問の助けを借りて、私が望んでいたものの名前を正確に見つけました:「<strong>バインドされたパラメーター」。

にメンバーを追加することで、「user /:id/dosomething」のようなルーティングを作成することができましたroutes.rb。ただし、このタイプのURLは、私が探していた解決策ではありません。

私の質問は、パラメータとして送信されたアクションユーザーのdosomethingアクションと一致するように「user / dosomething /:id」をどのように提供するかです。id

これが私がアイデアを得るために読んだセクションです:

3.1バインドされたパラメータ

通常のルートを設定するときは、Railsが着信HTTPリクエストの一部にマップする一連のシンボルを提供します。これらのシンボルのうちの2つは特別です:controller。アプリケーション内の:actionコントローラーの名前にマップし、そのコントローラー内のアクションの名前にマップします。たとえば、次のルートについて考えてみます。

get ':controller(/:action(/:id))'

の着信要求が/photos/show/1このルートによって処理される場合(ファイル内の以前のルートと一致していないため)、結果として、のshowアクションが呼び出さPhotosControllerれ、最後のパラメーター"1"がとして使用可能になりますparams[:id]。とはオプションのパラメータであり、括弧で示されている/photosため PhotosController#index、このルートはの着信要求もルーティングします。:action:id

4

1 に答える 1

1

カスタムルートを追加できます。

get 'user/doesomething/:id' => 'users#do_something', :as => 'do_something_user'

これにより、URLにGET一致するHTTPリクエストがのアクションにルーティングされます。パーツにはルートの名前が付けられているため、ヘルパーを使用してURLを生成できます。user/dosomething/:idUsersControllerdo_something:as => 'do_something_user'do_something_user_pathdo_something_user_url

ルーティングの詳細については、「OutsideInからのRailsルーティング」を参照してください。

于 2012-09-10T07:31:46.717 に答える