2011-06-27 12 views
2

私はconfig/routes.rbに次の行があります。オプションのURLパラメータをRails 3 "routes.rb"のparams [:something]にマップする方法

match "/assets/:id" => "assets#my_action" 

私は両方のようにそれを変更したいと思います:

/aasets/id 

/aasets/id/download 

assets#my_actionにマップされますが、とURLが/downloadで終わる場合は、my_actionの内部に刻印があります(たとえば、params[:something]は01になりません)。)。

どうすればいいですか?

答えて

6

両方のルートを同じコントローラに単純に一致させることができます。

match "/assets/:id" => "assets#my_action" 
match "/assets/:id/:downloadparams" => "assets#my_action" 

params [:downloadparams]のチェックで残りの部分が処理されます。

編集:ああ「ダウンロード」は変数になりません。あなたはparams[:action] == "download"場合

match "/assets/:id/:action" => "assets#my_action" 

チェックのようなものを試してみて、それがない場合は、パラメータを無視することができます。

あなたが1行でそれを行うことができます
8

:どちらかといえばparams[:download]は、URLのidの後だったかどうか確認するために使用することができ、あなたのコントローラ内すると

match '/assets/:id(/:download)' => "assets#my_action"

:オプションのパラメータの例としてダウンロード。

+1

これは私のRails 4アプリで私にとって役に立ちました。 – Abundnce10

関連する問題